3

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

任何想法如何解决这个问题?

4

3 回答 3

3

我刚刚遇到了同样的问题,想尝试需要 mcrypt 的 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 配置。在页面上,我在Loaded Configuration File下看到了这个:

/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 extension not found 错误 [1]

我使用 diffmerge 工具 [2] 将 /private/etc/ 中的原始 Apple php.ini 与 /usr/local/etc/php/5.3/ 中安装的一个自制软件进行比较,发现存在显着差异!所以在尝试之前仔细检查:

我接下来要做的是备份

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

然后将 php.ini 符号链接到自制软件

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

最后重新加载Apache后

sudo apachectl restart

并加载了 mcrypt,现在他们使用的是单个配置。

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

  1. Laravel 需要 Mcrypt PHP 扩展
  2. https://sourcegear.com/diffmerge/
于 2014-05-14T23:00:12.457 回答
1

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

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

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

于 2013-04-03T23:51:49.923 回答
0

我正在运行 OS X 10.9。我将 PHP 更新到 v5.5.8,发现 Apache 可以正确运行新版本,但终端仍在运行旧版本。在四处寻找解决方案后,我最终想,“我会重新启动它。”

答对了!终端和 Apache 运行相同版本的 PHP。

于 2014-01-23T17:49:16.697 回答