【问题标题】:zeromq working for phpcli, but not for apachezeromq 适用于 phpcli,但不适用于 apache
【发布时间】:2014-09-20 17:35:35
【问题描述】:

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

我按照这些说明http://zeromq.org/bindings:php 安装了 zeromq,当我从 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

那么您有什么建议可能还有什么问题吗?谢谢

【问题讨论】:

  • 您确实在编辑配置文件后重新启动了 Apache,对吧?
  • 是的,我重启了 apache 无数次
  • 您在错误日志中看到什么了吗?有时由于二进制不兼容而无法加载模块。
  • 感谢提示,我忘记了,错误日志中有一些内容 - 我已经编辑了原始问题
  • 看起来扩展程序根本没有安装。你关注installation instructions了吗?你真的有一个名为zmq.so 的文件吗?

标签: php apache zeromq


【解决方案1】:

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

您似乎安装了不同版本的 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。但如果它是针对 PHP 5.4 构建的,它可能会由于二进制不兼容而失败。

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

【讨论】:

  • 是的,可能是这样,apache php 使用的是 PHP 版本 5.3.10,而 CLI php 使用的是 v 5.5.4,你能导航我,如何升级 mod_php? (我试过sudo apt-get update && sudo apt-get upgrade等等,但是apache php版本还是一样)
  • 很抱歉,这是我无法远程完成的事情,对您的系统几乎一无所知。但是,如果您已经成功地为 CLI 设置了 PHP 5.5,那么通常您也应该能够以相同的方式安装 mod_php(或者已经拥有它,只需要切换)。
  • 抱歉,我尽我所能提供了帮助(我猜这是一种解决方案;至少您现在知道为什么它不起作用了)。我认为你应该问一个新问题,也许在superUser.com 上比在这里更好。那里的人更熟悉这类问题。我建议您尽可能多地提供有关您如何最终获得两个不同 PHP 版本的信息。
  • 是的,如果听起来忘恩负义,我很抱歉 :-) 谢谢!
  • 完全没问题。顺便说一句,如果你觉得这个答案对你有帮助,你可以接受这个答案。 ;)
【解决方案2】:

所以我终于解决了(感谢 lxg 为我指明了正确的方向)

首先,我必须手动删除我编译的 apache 和 php 版本(遵循一些关于 SO 的教程)

然后用 apt-get 删除 php 和 apache

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

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

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

【讨论】:

    猜你喜欢
    • 2013-06-28
    • 2011-07-04
    • 2011-09-09
    • 2020-06-29
    • 2019-10-18
    • 2016-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多