错误无法加载opcache.so:opcache.so:未定义的符号:compiler_global

2019-10-19 11:25发布

我有点不熟悉这样做,但我的目标是让2.4的Apache和PHP 5.5并在运行Ubuntu 12.10一个非托管的VPS运行。 我成功地让他们既要工作,并服务于HTML和PHP的内容,但我有与我建立了几个方面的问题。 先用opcache.so这是我想用PHP 5.5的一个主要原因。 我在conf文件中的模块opcache.so,但我收到来自Apache的这个错误:

Apache的错误日志:星期二15年3月4日:19:00.624085 2014] [mpm_event:声明] [PID 1853:TID 140683657721600] AH00489:配置了Apache / 2.4.8-dev的(UNIX)PHP / 5.5.11-dev的 - 恢复正常操作无法加载/usr/lib/php5/20100525/opcache.so:/usr/lib/php5/20100525/opcache.so:未定义的符号:compiler_globals

研究我还没有发现任何人谁解决了这个问题。 我发现了一些以前的职位建议PHP,可能需要不同的编译。 我不知道,如果是涉及到我的具体配置,但是这是从GitHub的源代码编译我第一次。 我的PHP信息显示“PHP版本5.5.11-dev的” ......是最新的,我可以编译?

是我用下面正确的配置?

任何建议,以得到这个错误固定,将不胜感激。

cd /usr/local/src/
git clone --branch PHP-5.5 https://github.com/php/php-src.git php55
cd /usr/local/src/php55
rm -rf configure
./buildconf --force

./configure \
--enable-opcache \
--enable-bcmath \
--enable-calendar \
--enable-dba \
--enable-exif \
--enable-ftp \
--enable-mbstring \
--enable-shmop \
--enable-sigchild \
--enable-soap \
--enable-sockets \
--enable-sysvmsg \
--enable-wddx \
--enable-zip \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-bz2 \
--with-config-file-path=/usr/local/apache2/conf \
--with-curl \
--with-gd \
-–with-jpeg-dir=/usr/lib \
--with-gettext \
--with-mcrypt \
--with-mysql-sock=/run/mysqld/mysqld.sock \
--with-mysqli \
--with-openssl \
--with-pdo-mysql \
--with-pdo-pgsql \
--with-xmlrpc \
--with-zlib

make && \
make test && \
make install

Answer 1:

您正在使用的Apache2 MPM 。 所以PHP构建一个ZTS(Zend的线程系统)版本。 见Apache的prefork的工人VS MPM对这个讨论。 随着MPM PHP在一个线程阵列存储它的编译器全局变量。 然而,OPcache正在寻找非线程版本的结构compiler_globals的。

IMO,如果您使用的是PHP,然后用MPM是一个错误,因为(我)的PHP运行慢〜25-50%,(二)许多扩展不工作; (ⅲ)OPcache未正确测试与ZTS的基础之上。 坚持一个prefork的工作人员配置,并重建。

有使用反向代理,如鱿鱼或nginx的,等更高的性能的选择,但这些配置这些需要更多的系统管理员的技能。



文章来源: Error Failed loading opcache.so: opcache.so: undefined symbol: compiler_globals - Apache 2.4 / PHP 5.5 / Ubuntu 12.10 VPS