我正在尝试设置一个新的dev环境,以匹配在RHEL6.5上运行PHP5.4的生产系统。因为PHP5.4是EOL,而且我不知道在我的新的RHEL服务器上安装PHP5.4需要哪些神奇的repos组合,所以我选择在开发服务器上使用PHP5.6。我成功地安装了5.6并引入了我的Laravel4.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,这表明问题就在那里,而不是我安装mcrypt本身。但是,我在我的新测试服务器上使用的apache配置文件与在我的生产服务器上使用的文件没有什么不同(谢谢,木偶!)在生产服务器上我从来没有遇到过这个问题。我很困惑。有什么建议吗?
发布于 2015-10-30 14:57:08
我睡觉后就能找到答案了。事实证明,我运行了两个不同版本的PHP,尽管我只安装了一个版本。我通过创建一个页面在浏览器中显示phpinfo()并与控制台输出的php -v进行比较,发现了这一点:浏览器显示PHP5.4.x,而CLI显示5.6.x。我的傀儡配置有点不同(由于不同的puppet安装),而且我没有正确安装libphp5.so和libphp5-zts.so模块(它们是从较旧的安装中复制的)。所以Apache使用了这些模块,然后抱怨没有安装mcrypt for php 5.4,这是正确的。但是,由于CLI版本为5.6,而且mcrypt安装得很正确,所以像artisan这样的CLI程序工作得很好。在我的例子中,解决方案是运行yum reinstall php56u以使那些正确的版本化模块就位。一旦我这样做,apache和CLI就在同一个页面上,我的应用程序就开始工作了。
https://serverfault.com/questions/732662
复制相似问题