首先,我检查了所有相关的问题,但在我的情况下,它一定是其他问题(我从那里尝试了解决方案);
我按照以下说明安装了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中都加载了