【发布时间】:2015-11-18 07:49:53
【问题描述】:
当我尝试启动 Apache 时,Apache 错误日志中出现以下错误:
PHP 致命错误:[ionCube Loader] Loader 必须作为第一个出现 在第 0 行 Unknown 中的 php.ini 文件中的条目
【问题讨论】:
标签: php
当我尝试启动 Apache 时,Apache 错误日志中出现以下错误:
PHP 致命错误:[ionCube Loader] Loader 必须作为第一个出现 在第 0 行 Unknown 中的 php.ini 文件中的条目
【问题讨论】:
标签: php
从错误消息本身可以清楚地知道错误是什么。在 stackoverflow 上发帖之前,请先做一些研究。
Zend 扩展可以直接从 /etc/php.ini 文件加载,也可以从 /etc/php.d/ 目录中加载。
在下面的例子中,这个 ioncube 行必须出现在任何 Zend 配置部分之前。这些部分通常以 [Zend] 开头,因此应该很容易看到:
zend_extension=/usr/lib/ioncube/php_ioncube_loader_lin_X.X.so
如果扩展是从 /etc/php.d 加载的,它们会按字母顺序加载。通常 ioncube 文件被命名为 /etc/php.d/ioncube.ini 而 zend 是 /etc/php.d/zend.ini。在这种情况下,应该不会出现问题。
最后,确保 ioncube 只加载一次。以下命令应该只返回一个结果:
grep 'zend_extension.ioncube' /etc/php.ini /etc/php.d/
如果您进行任何配置更改,请务必重新启动 Apache:
/etc/init.d/httpd重启
【讨论】:
phpenmod ioncube 或类似的方式启用该模块,请仔细检查 /etc/php/7.4/fpm/conf.d 等中的符号链接顺序。 10-opcache.ini 获得比 20-ioncube.ini 更高的优先级导致此问题。 ioncube 最好在顶部
正如@Hari Swaminathan 所说,在寻找此错误时来到此线程。
如果扩展是从 /etc/php.d 加载的,它们会按字母顺序加载
我在 docker 设置中遇到错误。所以将ini文件命名为00-ioncube.ini解决了这个问题
【讨论】:
此错误是由于 PHP 配置中的扩展顺序不正确造成的。阅读this website 可能会对您有所帮助。 您必须加载具有更高优先级的 ioncube。
【讨论】:
在 docker 本地开发中遇到同样的问题
能够添加特定于 ioncube 的 ini 文件和模块文件
# Add ioncube
ADD etc/ioncube_loader_lin_7.2.so $PHP_EXT_DIR/ioncube_loader_lin_7.2.so
# Add php overrides
ADD etc/docker-php-ext-ioncube.ini $PHP_INI_DIR/conf.d/docker-php-ext-ioncube.ini
感谢@davidmpaz
【讨论】: