PHP信息/Valet - 两个不同的 PHP 版本

PHPInfo / Valet - Two different PHP versions

好的,所以我遇到了一些很奇怪的事情。我的 phpinfo() 显示一个版本,而 php -v 显示另一个版本。

我 运行 在本地使用 MacBook Air (Mojave),LaravelValet.

phpinfo():

PHP Version 7.2.13

Configuration File (php.ini) Path   /usr/local/etc/php/7.2
Loaded Configuration File   /usr/local/etc/php/7.2/php.ini
Scan this dir for additional .ini files /usr/local/etc/php/7.2/conf.d

在我的终端中,它显示:

php -v

PHP 7.3.0 (cli) (built: Dec  7 2018 11:00:11) ( NTS )

现在,如果我执行 which php,我会得到:

/usr/local/bin/php

在我的 ~/.bash-profile 中,我有这个:

export "PATH=~/.composer/vendor/bin:$PATH"

我尝试过:

如何让我的实际 valet 网站使用 php@7.3?

像重启我的 Macbook 这样简单的事情解决了这个问题。重新启动后,正确的版本 7.3 显示在我的 phpinfo();

昨天我在Ubuntu18遇到了同样的问题。

起初我更改了PHP版本:

$ sudo a2dismod php7.2
$ sudo a2enmod php7.3
$ sudo update-alternatives --set php /usr/bin/7.3

但是 valet 仍然显示错误的 PHP 版本。重新启动没有工作。事实上,phpinfo() 显示的是 PHP 7.1.

在 运行 ps -aux | grep php 之后,我注意到 php-fpm(5.6、7.1 和 7.2)运行ning 的实例很少。

我阻止了他们

$ sudo service php5.6-fpm stop
$ sudo service php7.1-fpm stop
$ sudo service php7.2-fpm stop

然后开始7.3

$ sudo service php7.3-fpm start

现在我的 phpinfo() 显示 PHP

的正确版本

好消息,请升级到最新的代客版本,您可以轻松切换php版本。 资料来源:https://laravel.com/docs/5.8/valet

PHP Versions

Valet allows you to switch PHP versions using the valet use php@version command. Valet will install the specified PHP version via Brew if it is not already installed:

valet use php@7.2

valet use php   //without any specification, it will be using latest version

来自 MacBook pro (Mojave),Laravel 和 Valet:

valet use php@7.2

基本上 php 代客使用的和您的 mac 书使用的是不同的。 但是正如@Shiro 和@Israel Alexis Palma Quezada 已经提到的那样,在较新的版本中 valet use php73 会解决您的问题。 如果它不起作用,请尝试 运行ning composer global update 更新您的全局包,从而更新 valet

要更新 mac php 版本,运行:

export PATH="your/path/to/php@7.3/bin:$PATH"
export PATH="your/path/to/php@7.3/sbin:$PATH"

或者只需将这两行添加到您的 ~/.profile~/.bash_profile

不要忘记 运行 source ~/.profilesource ~/.bash_profile 或您选择编辑的任何文件。

下面的简单修复对我有用。

rm ~/.config/valet/valet.sock
valet restart 

我 运行 今天在使用 valet plus 时遇到了同样的问题。当我切换 PHP 版本时,它在我的浏览器中显示了前一个版本,但在我的终端中显示了正确的版本。查看我的 brew 服务列表:

brew services list

它显示其中一项 valet-php 服务 (valet-php@7.2) 不在服务列表中,但不知何故我的代客能够切换到它。 Valet 没有正确安装此 PHP,这就是导致问题的原因。我执行了以下操作来卸载 PHP 并使用 brew 重新安装它。

brew uninstall valet-php@7.2
sudo rm -rf /usr/local/Cellar/valet-php@7.2/7.2.34_1
brew install valet-php@7.2

曾经不显示在 brew 服务列表中的 PHP 版本现在显示了,我能够“停止”那个 php 版本的服务:

brew services stop valet-php@7.2 

无需重启即可使一切正常运行。

为了能够在我的机器上有效地更改 php 的版本,我使用了以下脚本:

添加到您的用户。bash_profile
然后用下面命令切换

切换-php7.x

switch-php() {
  valet stop
  brew unlink php@7.2 php@7.3 php@7.4
  brew link --force --overwrite php@
  brew services restart php@
  composer global update
  rm -f ~/.config/valet/valet.sock
  valet install
}

https://gist.github.com/r1tt3r/e0f199eb274d5ff186b73956af594316

我 运行 linux valetUbuntu 20.04 ,下面的命令对我有效

valet use 8.0

这里8.0指的是php版本

在我的例子中,它在强制特定的 PHP 版本后起作用:

valet use php@7.4 --force

注意:在 Ubuntu 20.04 Desktop

上测试了此解决方案

如果您正在使用 Valet Linux Plus(比 Valet Linux 具有更多功能),请使用 valet use {your PHP version} --update-cli。例如使用 php8.0 只是 运行:

valet use 8.0 --update-cli

这将同时更新 php-fpm 版本和 php-cli 版本。