php - Apache 和 Terminal 在 Mac OS 10.8 上运行 2 个不同的 php 构建

标签 php macos apache osx-mountain-lion

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

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

最佳答案

我刚遇到同样的问题,想尝试需要 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 

然后在 Termninal 中,我运行了这个:

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/中的一个自制程序进行比较,发现存在显着差异!所以在尝试之前仔细检查:

我接下来做的就是备份

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

然后将 php.ini 符号链接(symbolic link)到自制软件

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

终于在重新加载 Apache 之后

sudo apachectl restart

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

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

  1. Laravel requires the Mcrypt PHP extension
  2. https://sourcegear.com/diffmerge/

关于php - Apache 和 Terminal 在 Mac OS 10.8 上运行 2 个不同的 php 构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15800197/

相关文章:

macos - 如何在 Mac OS 上本地挂载 Docker 容器(就像我会使用 USB 驱动器一样)?

objective-c - 如何从 cocoa 中的 CFTypeRef 获取窗口号?

php - ubuntu 上使用 xampp 的虚拟主机配置错误

JavaScript 无法在 apache-served html 中工作

php - parse_signed_request - base64_url_decode - strstr 使用

php - 如何在数组中创建一个新字段?

php - 如果 php 每分钟更新 mysql 则排队

c - 在 OS X 上列出和查找窗口

php - IMAP 已安装但无法工作?

php - 如何在PHP错误验证期间将数据保留在表单中?