我使用Ubuntu 15.04 - 64位进行以下设置:
的Apache
服务器版本:Apache / 2.4.10(Ubuntu), 服务器内置:2015年7月24日17:25:18
PHP
PHP 5.6.4-4ubuntu6.2(cli)(建于2015年7月2日15:29:28)版权所有, (c)1997-2014 PHP Group Zend Engine v2.6.0,版权所有(c), 1998-2014 Zend Technologies与Zend OPcache v7.0.4-dev,版权所有, (c)1999年至2014年,Zend Technologies
我的php.ini(最后5行)
; Local Variables:
; tab-width: 4
; End
zend.loader=1
zend_extension="/var/www/extensions/ZendGuardLoader_56.so"
是的,ZendGuardLoader不会被加载(" php -v"以及#34; phpinfo()"中没有提及)。 线程安全已禁用!如果您需要其他选项,请与我们联系。
到目前为止我尝试了什么:
也很高兴知道:
我的Apache错误日志也是#34; clean"。如果我重命名.so文件,我的Apache会记录该异常。但是在目前的设置中,文件是可读的。不要误会我的意思,但我希望不会加载像#34; ZendGuardLoader这样的消息,因为" ..
UPDATE1
几个小时后,我非常害怕!我安装了流浪汉。 " Debian 7.8"同样,开始一切等等。在我的盒子上我安装了PHP(5.4)和Apache,创建了www文件夹到同一目的地,并下载了5.4 ZendGuard Loader。在我的盒子设置中我做了同样的事情,就像在我的主系统上一样 - > php.ini,最后一个条目:" zend_extension = / vagrant / ZendGuardLoader.so"文件存在,也是可读的,依此类推。创建一个新的" info.php" (" phpinfo()"),它仍然没有ZendGuardLoader扩展。命令php -v与主系统大致相同(版本差异)。
解决php -v
好吧,伙计们,我的思绪被打破了 - 但它没有修复!我告诉过你,通过检查php -v输出是非常默认的(没有ZendGuardLoader)。但是(!):php -v由命令行(cli)执行 - 所以我已经添加了" zend_extension"在php5 \ cli \ php.ini中 - >就像一个魅力!PHP 5.4.41-0 + deb7u1(cli)(建于2015年5月22日12:49:18) 版权所有(c)1997-2014 PHP小组 Zend Engine v2.4.0,版权所有(c)1998-2014 Zend Technologies Zend Technologies的Zend Guard Loader v3.3,Copyright(c)1998-2013,
这就是我想要的。所以我使用命令行调用了phpinfo文件 - 并将输出保存到一个单独的文件中。正如我所看到的,ZendGuardLoader也是如此!
但仍存在Apache问题。 zend_extension行与apache2 \ php.ini和cli \ php.ini完全匹配。
所以它不是权限问题,因为CLI没有问题。我认为,apache已经被打破了,因为它不会加载那种不那么特殊的扩展。
新的一天 - 新想法
好的,昨天我们明白了,为什么它不能在CLI上工作,但这不是主要问题。所以我在CLI和apache上集成了ioncube。 CLI就像魅力一样。 Apache也不会加载ioncube。那么这个apache有什么问题..?
我试图通过在php5 \ apache2 \ conf.d \目录中创建一个新文件来激发一些错误。新文件包含相同的" zend_extension = / vagrant / ZendGuardLoader.so"片段,作为我的php5 \ apache2 \ php.ini - 所以apache2会尝试加载.so两次,并抛出预期的错误:
PHP致命错误:[Zend Guard Loader] Extension" Zend Guard Loader"无法在第0行的“未知”中加载两次
Apache尝试加载这两个扩展。所以我可能是对的,如果我要说,apache2加载扩展,如果它只是一个!但看起来,apache无法使用扩展。记住 - php cli(" php -v" /" php -m")可以!
答案 0 :(得分:1)
对于那些想知道解决方案的人:
调试Apache一段时间之后,我发现,每个apache2 \ php.ini中的include对我来说无法正常工作。所以我在apache2 \ conf.d \中创建了一个新文件 - 并删除了apache2 \ php.ini中的条目。
重新加载apache2后没有任何改变,但phpinfo()说,扩展已加载。我再次重新加载 - 最后!,一切正常。我不确定,我或apache2会发生什么。
古玩的事情:重启虚拟机后我要重新加载apache2两次。但在这个过程之后,一切都很完美。所以伙计..
<强> TL; DR; 强>