Apache和Terminal在Mac OS 10.8上运行2个不同的php版本


Apache and Terminal runs 2 different php builds, on Mac OS 10.8

由于Mac OS 10.8有一个旧的PHP版本,我不得不安装一个新的PHP版本。所以我只编译PHP 5.4.13。然后我在终端上执行php -v命令,它显示新的php版本正在运行。但是当我从浏览器中执行phpinfo时,它显示的是旧的PHP版本,即PHP 5.3.x。这甚至是在创建到新php构建的软链接之后,/opt/local/lib/php(旧目录)->/usr/bin/php(新目录)

有什么办法解决这个问题吗?

我刚刚遇到了同样的问题,想尝试需要加密的Laravel。

简而言之,我一直在使用Mountain Lion自带的内置PHP 5.3.26,然后几个月后,当我对自制程序更熟悉后,我用它来安装一个新版本的PHP。

brew update
brew upgrade
brew install php53 php53-mcrypt ...

我把

<?php phpinfo(); 

进入~/Sites/info.php,然后进入localhost/info.php查看我的Apache+PHP配置。在页面上,我看到了这个,在加载的配置文件:

/private/etc/php.ini 

然后在终端中,我运行这个:

php -i | grep ini

显示了这个输出

Loaded Configuration File => /usr/local/etc/php/5.3/php.ini

加上更多的配置加载以及…

Additional .ini files parsed => /usr/local/etc/php/5.3/conf.d/ext-mcrypt.ini,
/usr/local/etc/php/5.3/conf.d/ext-xdebug.ini,
/usr/local/etc/php/5.3/conf.d/redis.ini

我遇到的问题是mcrypt在php cli版本中加载,但我的Laravel测试页面不会加载给出mcrypt扩展未发现错误[1]

我使用了一个diffmerge工具[2]来比较/private/etc/目录下的原始Apple php.ini和安装在/usr/local/etc/php/5.3/目录下的自制php.ini,发现有显著的差异!因此,在尝试之前请仔细检查:

我接下来做的是备份

sudo mv /private/etc/php.ini /private/etc/php.ini.apple

然后将php.ini符号链接到homebrew的

ln -s /usr/local/etc/php/5.3/php.ini /private/etc/php.ini 

最后重新加载Apache

sudo apachectl restart

和mcrypt加载,现在他们使用一个单一的配置。

如果你的本地主机上有另一个应用程序与新配置不一致,只需删除符号链接,并将其更改为。apple版本并重新启动Apache以恢复。

  1. Laravel需要PHP扩展名
  2. https://sourcegear.com/diffmerge/

这可能是一个很好的参考:

如何在Mac OS X Lion上安装php 5.4 ?

有一些关于升级PHP到5.4的详细说明,并且还注意到MacPorts如何使它变得非常轻松。

我正在运行OS X 10.9。我将PHP更新到v5.5.8,发现Apache正确地运行了新版本,但终端仍在运行旧版本。在寻找了一段时间的解决方案后,我最终想,"我要重新启动它。"

宾果!终端和Apache运行相同版本的PHP