zeromq适用于phpcli,但不适用于apache


zeromq working for phpcli, but not for apache

首先,我检查了所有相关的问题,但在我的情况下,它一定是其他问题(我从那里尝试了解决方案);

我按照以下说明安装了zeromqhttp://zeromq.org/bindings:php当我从CLI运行php脚本时,一切都很好

问题是从apache服务器运行,我得到了

Fatal error: Class 'ZMQContext' not found in /var/www/i.php on line 19

第19行是

$context = new ZMQContext();

我尝试过的:

1) 我运行了php_info(),发现我的php.ini文件在哪里

 /etc/php5/apache2/php.ini
 /etc/php5/apache2/conf.d/10-php_pdo_mysql.ini, 
 /etc/php5/apache2/conf.d/10-zmq.ini,
 and so on...

所以我打开了这些文件并添加了一行"extension=zmq.So"

没有帮助。

2) 我在脚本的开头添加了以下几行:

use 'ZMQContext;
use 'ZMQ;

再次,没有帮助

3) 我查看了apache错误日志,发现如下:

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626
/zmq.so' - /usr/lib/php5/20090626/zmq.so:
 cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626
/zmq.so' - /usr/lib/php5/20090626/zmq.so: cannot open shared object file: No such 
file or directory in Unknown on line 0

4) 所以我检查了zmq.So在我的机器上的实际位置:

user@wb:~$ sudo find / -name zmq.so
/home/user/php-zmq/modules/zmq.so
/home/user/php-zmq/.libs/zmq.so
/var/www/push/php-zmq/modules/zmq.so
/var/www/push/php-zmq/.libs/zmq.so
/usr/lib/php5/20100525/zmq.so
/usr/local/lib/php/extensions/no-debug-non-zts-20121212/zmq.so

那么,你还有什么建议吗?感谢

我不得不进行一些猜测,但让我们试一试:

您似乎安装了不同版本的PHP,或者更新/降级了PHP。

您的系统中有一个/usr/lib/php5/20100525/文件夹,它属于Debian类型机器上的PHP 5.4(我认为)。但是您的PHP在/usr/lib/php5/20090626/中查找该文件,我认为它属于PHP 5.3。

您的PHP CLI似乎与PHP 5.4一起运行,而Apache的mod_php似乎运行5.3。

如果这是真的,您可以尝试将zmq.so复制到/usr/lib/php5/20090626/zmq.so/中,然后重新启动Apache。但是,如果它是针对PHP5.4构建的,它可能会由于二进制不兼容而失败。

在这种情况下,我建议您将mod_php升级到PHP 5.4(再次?)。

所以我终于解决了它(thaks to lxg for pointing me to the right direction)

首先,我必须手动删除我编译的apache和php版本(下面是SO上的一些教程)

然后使用apt-get-删除php和apache

使用apt-get-重新安装php和apache

重新安装zmq(编译并执行php绑定)

我没有最新的php和apache,但至少模块在apache和php-CLI中都加载了

相关文章: