在Mac OS 10.8上,Apache和终端运行了两个不同的PHP版本。

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(旧版本) -> /usr/bin/php(新版本)。
有什么办法解决这个问题吗?

你尝试过MAMP吗?我认为这是在OS X上拥有更新的PHP版本的最快解决方案。 - juan.obando
是的,我有MAMP,但我需要添加不同的PHP扩展,但我找不到使用MAMP进行操作的方法。 - Thanu
你需要哪个扩展?你可以下载源代码,编译它并将其添加到PHP.ini文件中。这是我在OS X上处理PHP扩展的常规做法(我不使用MAMP,而是使用OS X提供的默认PHP版本)。 - juan.obando
3个回答

3

我遇到了同样的问题,想要尝试使用需要mcrypt的Laravel。

简而言之,我一开始使用的是Mountain Lion自带的PHP 5.3.26版本,几个月后,当我更加熟悉homebrew时,我使用它来安装了一个更新的PHP版本。

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

I put

<?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扩展的错误[1]。
我使用了一个diffmerge工具[2]来比较原来的Apple php.ini文件(在/private/etc/中)和Homebrew安装的那个(在/usr/local/etc/php/5.3/中),发现它们之间存在显著差异!所以在尝试这种方法之前,请仔细检查:
接下来我做的是备份。
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需要Mcrypt PHP扩展
  2. https://sourcegear.com/diffmerge/

1
这可能是一个很好的参考资料: 如何在Mac OS X Lion上安装PHP 5.4? 有一些关于升级到PHP 5.4的详细说明,以及关于如何使用MacPorts使其变得非常轻松的注意事项。

0
我正在运行OS X 10.9。我将PHP更新到v5.5.8,发现Apache正确地运行了新版本,但终端仍在运行旧版本。在寻找解决方案一段时间后,我最终想到:“我重启一下试试。”
太棒了!终端和Apache都在运行相同版本的PHP。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接