rhel6 + php56u (来自 ius) + mcrypt

rhel6 + php56u (来自 ius) + mcrypt

我正在尝试设置一个新的开发环境以匹配在 RHEL 6.5 上运行 PHP 5.4 的生产系统。因为 PHP 5.4 已 EOL,而且我无法弄清楚在我的新 RHEL 开发服务器上安装 PHP 5.4 需要哪些神奇的存储库组合,所以我选择在开发服务器上使用 PHP 5.6。我设法安装了 5.6 并引入了我的 Laravel 4.1 项目,但是当我在浏览器中加载它时,我收到了以下内容:Mcrypt PHP extension required.我已验证php56u-mcrypt-5.6.14-1.ius.el6.x86_64软件包已安装;我已验证/etc/php.d/20-mcrypt.ini正在加载扩展;我已验证显示php -m | grep mcrypt模块已加载;我已验证显示php -i | grep mcrypt确实/etc/php.d/20-mcrypt.ini正在加载并且mcrypt support注册为enabled;我重启过 apache 的次数已经记不清了;我甚至验证过存在/usr/lib64/php/modules/mcrypt.so。奇怪的是,当我尝试运行 composer 命令时,我没有收到此消息,这似乎是其他地方的常见问题。

这让我感到困惑,我似乎在命令行上安装了 mcrypt,但通过 Apache 却不行,这表明问题出在这里,而不是我安装的 mcrypt 本身。但我在新测试服务器上使用的 apache 配置文件与在生产服务器上使用的配置文件没有什么不同(感谢 Puppet!),而且我在生产服务器上从未遇到过这个问题。我被难住了。有什么建议吗?

答案1

我想睡一觉后就能找到答案。结果发现,我运行的是两个不同版本的 PHP,尽管我只安装了一个。我通过创建一个页面phpinfo()在浏览器中显示并与控制台输出进行比较发现了这一点php -v:浏览器显示 PHP 5.4.x,而 CLI 显示 5.6.x。我的 puppet 配置略有不同(由于安装了不同的 PHP 版本),而且我没有正确安装libphp5.solibphp5-zts.so模块(它们是从旧安装中复制的)。因此 Apache 正在使用这些模块,然后抱怨 mcrypt适用于 php 5.4没有安装,这是正确的。但由于 CLI 版本5.6并且 mcrypt 在那里正确安装后,像 artisan 这样的 CLI 程序就可以正常工作了。就我而言,解决方案是运行yum reinstall php56u以​​将这些正确版本的模块安装到位。一旦我这样做了,apache 和 CLI 就会达成一致,我的应用程序就会开始工作。

相关内容