【问题标题】:Homestead refuses to use specific PHP version (7.1 instead of 8.0)Homestead 拒绝使用特定的 PHP 版本(7.1 而不是 8.0)
【发布时间】:2021-08-20 01:29:00
【问题描述】:

简短版

Homestead 上的 Laravel 应用程序使用 PHP 8.x,如 phpinfo() 所示,但 php -v 声明服务器使用的是 7.1(这是我想要的)。这怎么可能?如何告诉 Laravel 应用程序使用 7.1 而不是 8.x?

长版

我有一个较旧的 Laravel 应用程序 (5.8),需要升级到 8.0。我可能正在使用 Shift 来执行此操作,但我从未手动进行过升级,所以我认为我应该至少执行一次。

所以我将 Homestead 升级到当前版本 (12.x),一切正常。

然后我尝试使用sudo update-alternatives --config php 将我的 PHP 版本从 7.1 升级到 8.0,并选择了 PHP。然后我用php -v 验证它切换到那个版本。正如预期的那样,我开始在浏览器中收到弃用错误。知道我必须花一些时间来解决那些我切换回 7.1 的问题......但错误仍然存​​在!

我重新启动了 PHP,我重新启动了服务器,我重新加载并重新配置了服务器,我销毁并重新配置了服务器,但绝对没有解决这个问题。我什至在 Homestead.yaml 文件中指定了 php: "7.1" 并重新配置无济于事。

此时看来,Homestead 本身的升级以某种方式告诉 PHP 忽略我指定它使用的版本。所以我知道我可以降级,我想,但这并不是一个真正的解决方案,而是一个创可贴。而且我也不确定这是否真的有效。

我已经尝试了 StackOverflows Change Laravel Homestead v7.0.1 with php 7.2 to php 7.1 中的答案,包括 php71。

操作系统:Windows 10 宅基地:12.x

这个人有一个相同的问题,并以某种方式用 Docker 解决了它,但我不明白如何将它翻译成 Homestead。

【问题讨论】:

    标签: laravel homestead


    【解决方案1】:

    有 PHP-CLI 和 PHP-web。 PHP-CLI 版本是使用 php -v 时报告的版本,但 PHP-CLI 是 NGinx 使用的版本,因此在 ~/public/index.php 中使用 phpinfo() 时得到 8.0

    为了解决这个问题,我手动更新了/etc/nginx/sites-enabled/mysite 并在location 下面编辑了fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;fastcgi_pass unix:/var/run/php/php7.1-fpm.sock; 的行,然后我用sudo systemctl restart nginx 重新启动了PHP。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-23
      • 1970-01-01
      • 1970-01-01
      • 2018-12-08
      • 2016-01-27
      相关资源
      最近更新 更多