这是我在 cenOS 6.7 上使用 apache2 2.4.16 编译 PHP 5.6.11 的方法:
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-config-file-path=/usr/local/lib --with-mysql --with-curl --with-openssl --disable-fileinfo --enable-bcmath --enable-calendar --enable-ftp --enable-libxml --enable-mbstring --enable-sockets --enable-sysvsem --enable-sysvshm --enable-sysvmsg --enable-wddx --with-kerberos --with-mcrypt --enable-sockets --with-zlib --with-pdo-mysql --with-mysqli --with-gettext --enable-cgi --enable-mbstring --with-gd --enable-pdo --with-pdo-mysql --with-pdo-pgsql --with-mysqli=/usr/bin/mysql_config --with-mysql-sock=/var/lib/mysql/mysql.sock '--with-snmp' '--enable-soap'
但是当我在 php.ini 中包含 ioncube 加载器时:
zend_extension = /usr/lib64/php/modules/ioncube_loader_lin_5.6.so
在检查 php 版本时,它开始给出这个错误:
php -v 无法加载/usr/lib64/php/modules/ioncube_loader_lin_5.6.so:
/usr/lib64/php/modules/ioncube_loader_lin_5.6.so:未定义符号:executor_globals PHP 5.6.11(cli)(构建时间:2015 年 12 月 28 日 17:35:58)版权所有 (c) 1997-2015 The PHP Group Zend Engine v2.6.0,版权所有 (c) 1998-2015 Zend Technologies
我也确定扩展目录,因为我得到了这个:
php -i | grep extension_dir 无法加载 /usr/lib64/php/modules/ioncube_loader_lin_5.6.so:
/usr/lib64/php/modules/ioncube_loader_lin_5.6.so: 未定义符号:executor_globals extension_dir => /usr/lib64/php/modules/ => /usr/lib64/php/modules/ sqlite3.extension_dir => 无值 => 无值
因此,我已将 ioncube_loader_lin_5.6.so 放在模块目录中。
同时,我在 ioncube 编码页面上看到空白屏幕。我试图找出错误“未定义符号:executor_globals”,该错误通常发生在 php 和 ioncube 之间存在版本差异时。但我使用的是适用于 php 5.6.11 的正确加载器 5.6。
请帮助我摆脱这件令人讨厌的事情。
答案1
根据要求,为了提高可见性:
这线程安全在 ionCube Loader 和 PHP 二进制文件中都必须匹配 - 例如,如果php -i | grep "Thread Safety" -i
显示为已启用,则必须使用线程安全的 ionCube Loader。