Apache 不会加载 Zend Guard Loader
Apache won't load Zend Guard Loader
我正在使用 Ubuntu 15.04 - 64 位,设置如下:
Apache
Server version: Apache/2.4.10 (Ubuntu),
Server built: Jul 24 2015 17:25:18
PHP
PHP 5.6.4-4ubuntu6.2 (cli) (built: Jul 2 2015 15:29:28) Copyright,
(c) 1997-2014 The PHP Group Zend Engine v2.6.0, Copyright (c),
1998-2014 Zend Technologies with Zend OPcache v7.0.4-dev, Copyright,
(c) 1999-2014, by 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" 中没有提到,"phpinfo()" 中也没有提到)。
线程安全被禁用!如果您需要其他选项,请告诉我。
到目前为止我尝试了什么:
- 删除了"zend.loader=1"选项,
- 尝试 "zend_loader.enabled = 1" 而不是 "zend.loader"
- 包括来自 ZendGuardLoader 的旧版本(5.5 而不是 5.6)
- 将两个文件的所有者和组更改为我的帐户(而不是 www-data)
- 将权限更改为 777、775、755
也很高兴知道:
我的 Apache 错误日志也是 "clean"。如果我重命名 .so 文件,我的 Apache 会记录该异常。但在当前设置下,该文件是可读的。不要误会我的意思,但我希望看到一条消息,如 "ZendGuardLoader can't be loaded because "..
更新1
几个小时后,我很害怕!我已经安装了 vagrant incl。 "Debian 7.8" 以及,开始一切等等。在我的盒子上,我安装了 PHP (5.4) 和 Apache,创建了相同目的地的 www 文件夹,并下载了 5.4 ZendGuard Loader。在我的盒子设置中,我做了同样的事情,就像在我的主系统上一样 -> php.ini,最后一个条目:"zend_extension=/vagrant/ZendGuardLoader.so"
文件存在,也可读等等。创建新的 "info.php" ("phpinfo()") 后,它仍然没有 ZendGuardLoader Extension。命令 php -v 表示与主系统基本相同(版本不同..)。
php-v
的解决方案
好吧伙计们,我的脑子坏了——但还没有修好!我告诉过你,通过检查 php -v 输出是非常默认的(没有 ZendGuardLoader)。但是(!):php -v 由命令行 (cli) 执行 - 所以我在 php5\cli\php.ini 中添加了 "zend_extension" -> 效果很好!
PHP 5.4.41-0+deb7u1 (cli) (built: May 22 2015 12:49:18)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
with Zend Guard Loader v3.3, Copyright (c) 1998-2013, by Zend Technologies
这就是我想要的。所以我使用命令行调用了 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\ 目录中创建一个新文件来引发一些错误。新文件包含与我的 php5\apache2\php.ini 相同的 "zend_extension=/vagrant/ZendGuardLoader.so" 片段 - 因此 apache2 会尝试加载 .so 两次,并抛出预期的错误:
PHP Fatal error: [Zend Guard Loader] Extension "Zend Guard Loader" cannot be loaded twice in Unknown on line 0
Apache 尝试加载这两个扩展。所以我可能是对的,如果我要说,apache2 加载扩展,如果它只有一个的话!但似乎,apache 不能与扩展一起使用。记住 - php cli ("php -v" / "php -m" ) 可以!
致所有想知道解决方案的人:
在调试 Apache 一段时间后,我发现每个 apache2\php.ini 的 include 对我来说不能正常工作。所以我在 apache2\conf.d\ 中创建了一个新文件 - 并删除了 apache2\php.ini.
中的条目
重新加载 apache2 后没有任何变化,但 phpinfo() 显示扩展已加载。我又重新加载了 - 最后!一切正常。我不确定,我或 apache2 会发生什么。
奇怪的是:我必须在重新启动 VM 后重新加载 apache2 两次。但在这个过程之后,一切都很完美。所以伙计们..
TL;DR;
- 在 apache2\conf.d\ 中创建新文件并使用相同的 "zend_extension=/path"
- 重新启动 apache2 两次。
- 利润
我正在使用 Ubuntu 15.04 - 64 位,设置如下:
Apache
Server version: Apache/2.4.10 (Ubuntu), Server built: Jul 24 2015 17:25:18
PHP
PHP 5.6.4-4ubuntu6.2 (cli) (built: Jul 2 2015 15:29:28) Copyright, (c) 1997-2014 The PHP Group Zend Engine v2.6.0, Copyright (c), 1998-2014 Zend Technologies with Zend OPcache v7.0.4-dev, Copyright, (c) 1999-2014, by 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" 中没有提到,"phpinfo()" 中也没有提到)。 线程安全被禁用!如果您需要其他选项,请告诉我。
到目前为止我尝试了什么:
- 删除了"zend.loader=1"选项,
- 尝试 "zend_loader.enabled = 1" 而不是 "zend.loader"
- 包括来自 ZendGuardLoader 的旧版本(5.5 而不是 5.6)
- 将两个文件的所有者和组更改为我的帐户(而不是 www-data)
- 将权限更改为 777、775、755
也很高兴知道:
我的 Apache 错误日志也是 "clean"。如果我重命名 .so 文件,我的 Apache 会记录该异常。但在当前设置下,该文件是可读的。不要误会我的意思,但我希望看到一条消息,如 "ZendGuardLoader can't be loaded because "..
更新1
几个小时后,我很害怕!我已经安装了 vagrant incl。 "Debian 7.8" 以及,开始一切等等。在我的盒子上,我安装了 PHP (5.4) 和 Apache,创建了相同目的地的 www 文件夹,并下载了 5.4 ZendGuard Loader。在我的盒子设置中,我做了同样的事情,就像在我的主系统上一样 -> php.ini,最后一个条目:"zend_extension=/vagrant/ZendGuardLoader.so"
文件存在,也可读等等。创建新的 "info.php" ("phpinfo()") 后,它仍然没有 ZendGuardLoader Extension。命令 php -v 表示与主系统基本相同(版本不同..)。
php-v
的解决方案好吧伙计们,我的脑子坏了——但还没有修好!我告诉过你,通过检查 php -v 输出是非常默认的(没有 ZendGuardLoader)。但是(!):php -v 由命令行 (cli) 执行 - 所以我在 php5\cli\php.ini 中添加了 "zend_extension" -> 效果很好!
PHP 5.4.41-0+deb7u1 (cli) (built: May 22 2015 12:49:18) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies with Zend Guard Loader v3.3, Copyright (c) 1998-2013, by Zend Technologies
这就是我想要的。所以我使用命令行调用了 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\ 目录中创建一个新文件来引发一些错误。新文件包含与我的 php5\apache2\php.ini 相同的 "zend_extension=/vagrant/ZendGuardLoader.so" 片段 - 因此 apache2 会尝试加载 .so 两次,并抛出预期的错误:
PHP Fatal error: [Zend Guard Loader] Extension "Zend Guard Loader" cannot be loaded twice in Unknown on line 0
Apache 尝试加载这两个扩展。所以我可能是对的,如果我要说,apache2 加载扩展,如果它只有一个的话!但似乎,apache 不能与扩展一起使用。记住 - php cli ("php -v" / "php -m" ) 可以!
致所有想知道解决方案的人:
在调试 Apache 一段时间后,我发现每个 apache2\php.ini 的 include 对我来说不能正常工作。所以我在 apache2\conf.d\ 中创建了一个新文件 - 并删除了 apache2\php.ini.
中的条目重新加载 apache2 后没有任何变化,但 phpinfo() 显示扩展已加载。我又重新加载了 - 最后!一切正常。我不确定,我或 apache2 会发生什么。
奇怪的是:我必须在重新启动 VM 后重新加载 apache2 两次。但在这个过程之后,一切都很完美。所以伙计们..
TL;DR;
- 在 apache2\conf.d\ 中创建新文件并使用相同的 "zend_extension=/path"
- 重新启动 apache2 两次。
- 利润