PHPInfo / Valet-两种不同的PHP版本

时间:2018-12-10 20:52:46

标签: php laravel valet

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

我正在使用 Laravel Valet 在MacBook Air(Mojave)上本地运行。

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"

我试图:

  • 重新启动Nginx
  • 重新启动代客

  • 取消链接PHP@7.2并使用Homebrew链接PHP@7.3:

    Olivers-MacBook-Air:〜Oliverbusk $ brew取消链接php@7.2 错误:没有这样的桶:/usr/local/Cellar/php@7.2

如何获取我的实际代客网站以使用 php@7.3

10 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:3)

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

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

switch-php7.x

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

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

答案 2 :(得分:1)

诸如重启我的Macbook这样基本的东西解决了这个问题。重新启动后,正确的版本7.3显示在我的phpinfo();

答案 3 :(得分:1)

昨天我在Ubuntu 18上遇到了同样的问题。

起初,我更改了PHP版本:

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

但是代客仍然显示错误的PHP版本。重新启动无效。实际上,phpinfo()显示的是PHP 7.1。

运行ps -aux | grep php后,我注意到php-fpm的一些实例(5.6、7.1和7.2)正在运行。

我阻止了他们

$ 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版本

答案 4 :(得分:1)

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

  

PHP版本

     

代客允许您使用代客使用php @ version命令切换PHP版本。如果尚未安装,代客将通过Brew安装指定的PHP版本:

valet use php@7.2

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

答案 5 :(得分:1)

基本上,PHP代客使用的和您的Macbook使用的代客是不同的。 但是,正如@Shiro和@以色列Alexis Palma Quezada所提到的那样,在较新的版本valet use php73中可以解决您的问题。 如果不起作用,请尝试运行composer global update更新全局软件包,从而更新代客服务

要更新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或您选择编辑的任何文件。

答案 6 :(得分:1)

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

brew services list

它表明其中一个valet-php服务(valet-php@7.2)不在服务列表中,但是我的代客可以通过某种方式切换到该列表。代客未正确安装此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 

这使所有内容无需重新启动即可再次正常工作。

答案 7 :(得分:1)

在我的情况下,它在强制特定的 PHP 版本后工作:

@app.route('/search')
def search():
    term = request.args.get('term')

答案 8 :(得分:0)

使用Laravel和Valet从MacBook Pro(Mojave):

valet use php@7.2

答案 9 :(得分:0)

我在 Ubuntu 20.04 上运行 linux valet,以下命令对我有用

valet use 8.0

这里8.0指的是php版本。