首先,是的,我知道那里有一个非常相似的问题,但那里的答案并不适用于我的情况,也没有迹象表明它解决了另一个人的问题.
根据Racthet文档中的教程,我在我的Apache服务器上安装了ZMQ.经过很多挫折后我成功地安装了所有东西,我准备好运行一个例子.这个简单的PHP脚本放在post.php这行中(在一些相当简单的PHP之后,设置变量等):
$context = new ZMQContext();
Run Code Online (Sandbox Code Playgroud)
但是,它会抛出此错误:
Fatal error: Class 'ZMQContext' not found in /home/lights/public_html/apps/post.php on line 12
Run Code Online (Sandbox Code Playgroud)
我已经包含extension=zmq.so在我唯一使用的php.ini文件的末尾,正如zeromq文档所建议的那样.为了确保Apache加载与页面相同的php.ini,我检查了.Apache给了我与在页面上运行phpinfo()完全相同的信息:
Configuration File (php.ini) Path /usr/local/lib
Loaded Configuration File /usr/local/lib/php.ini
Run Code Online (Sandbox Code Playgroud)
由此我得出结论,如果我php post.php从终端运行,应该出现相同的错误.但是,在这种情况下没有显示错误 - 似乎PHP代码确实发挥了作用.所以,到目前为止,我已经消除了我在搜索中找到的唯一可能的根本原因,我正在寻找替代方案.
任何人都有解决方案,建议,想法,任何可以帮助清除这一点的东西?
我没有使用过 ZMQ 但这似乎是一个配置问题。
例如在 ubuntu 12.04 中:
/etc/php5/apache2/php.ini is used for apache
/etc/php5/cli/php.ini is used for cli
Run Code Online (Sandbox Code Playgroud)
要检查 ZMQ 当前是否在 apache 中加载,创建一个包含的 php 文件phpinfo();并通过 Web 浏览器检查它的输出,应该有一些关于 ZMQ 的信息,使用 ctrl-f 搜索它。
在 cli 中,php -m将显示加载/编译的模块或扩展。
除了您使用没有 ZMQContext 的 ZMQ 版本之外,我想不出其他原因?您可以查看 ZMQ 文档和您使用的版本。
如果 ZMQ 当前已加载,但您的代码仍然无法运行,另一个可能的原因是使用了命名空间。如果你的 post.php 是这样的
<?php
namespace Some\NameSpace;
$context = new ZMQContext();
Run Code Online (Sandbox Code Playgroud)
那么它表示命名空间Some\NameSpace中的ZMQContext,完整的限定类名是Some\NameSpace\ZMQContext,它不存在。所以你可能需要使用\ZMQContext当前命名空间之外的类。
如果扩展已启用,您仍然需要使用它:
use \ZMQContext;
use \ZMQ;
Run Code Online (Sandbox Code Playgroud)
(或者使用前导“\”直接访问它们)
| 归档时间: |
|
| 查看次数: |
11392 次 |
| 最近记录: |