InfinityFree部署Google OAuth2遇Composer版本及文件缺失错误求助
问题解决思路
1. 解决PHP版本不兼容核心问题
如果InfinityFree控制台支持切换PHP版本,优先将服务器PHP版本升至8.0及以上,无需调整依赖即可直接兼容,这是最优解决方案。
- 不要直接修改
platform_check.php的版本标识,该操作仅跳过版本校验,没有解决依赖本身不支持PHP7.4的根本问题,必然会引发后续文件缺失、语法报错等连锁问题。 - 你本地开发环境PHP版本大概率>=8.0,执行
composer install时安装的依赖都是适配PHP8+的版本,其中你引入的league/oauth2-google:^4.0本身就要求PHP>=8.0,部署到PHP7.4的服务器上自然无法运行。 - 若无法升级服务器PHP版本,需要指定Composer安装适配PHP7.4的依赖版本,修改
composer.json如下:
{ "require": { "google/apiclient": "2.10", "symfony/var-dumper": "^5.4", "league/oauth2-google": "^3.0" }, "config": { "platform": { "php": "7.4.8" } } }
- 修改完成后删除本地的
vendor目录、composer.lock文件,重新执行composer install,此时安装的所有依赖均为适配PHP7.4的版本。
2. 修复文件加载报错问题
- 之前的
guzzlehttp/psr7相关文件缺失报错,是因为高版本的guzzlehttp/psr7目录结构和低版本不同,你跳过版本校验后,自动加载机制依然按照高版本的文件路径查找文件,自然找不到对应文件。 - 按照上一步骤重新安装适配PHP7.4的依赖后,完整上传新的
vendor目录、composer.json、composer.lock到服务器,上传时建议开启二进制传输模式,避免部分文件传输丢失、损坏。
3. 修正代码配置问题
- 你当前
config.php中的回调地址$redirect为本地地址http://localhost/test/login.php,部署到线上后需要修改为你InfinityFree站点的实际回调地址,否则Google OAuth授权后会跳转失败,无法拿到授权code。 - 修正拼写错误:
$cilentId拼写错误,应为$clientId,避免后续维护时出现参数传递问题。
4. 上线验证流程
- 上传完成后先访问站点,确认无版本报错、文件加载报错。
- 点击Google登录按钮,验证跳转授权、回调拉取用户信息的流程是否正常。
内容的提问来源于stack exchange,提问作者Aminur Rahman
相关产品推荐
相关产品推荐

