First of all, yes I am aware that there is a very similar question out there, but the answer given there doesn't apply to my situation, and there's no indication that it fixed the other person's problem either.
I have ZMQ installed on my Apache server, according to the tutorial found in the Racthet documentation. I installed everything successfully after a lot of frustration, and I am ready to run an example. The simple PHP script is placed in post.php
and features this line (after some rather trivial PHP, setting variables etc):
$context = new ZMQContext();
However, it throws this error:
Fatal error: Class 'ZMQContext' not found in /home/lights/public_html/apps/post.php on line 12
I have included extension=zmq.so
at the end of my only used php.ini file, as the zeromq documentation suggested. To make sure Apache is loading the same php.ini as the page, I checked. Apache gave me exactly the same info as running phpinfo() on the page:
Configuration File (php.ini) Path /usr/local/lib
Loaded Configuration File /usr/local/lib/php.ini
From this I concluded that the same error should appear if I run php post.php
from the terminal. However, no error was shown in this case - it seems the PHP code did its part. So, I have eliminated the only possible root cause that I have found in my search so far, and I am looking for an alternative.
Anyone have a solution, suggestion, idea, anything at all that could help clear this up?
I have not used ZMQ but this seems like a configure problem.
Eg in ubuntu 12.04:
/etc/php5/apache2/php.ini is used for apache
/etc/php5/cli/php.ini is used for cli
To check if ZMQ is currently loaded in apache, create a php file contains phpinfo();
and check it's output through web browser, there should be some info about ZMQ, use ctrl-f to search for it.
In cli, php -m
will show loaded/compiled module or extension.
I can't thought other reason than you used a ZMQ version which hasn't ZMQContext ? You could check ZMQ document and the version you used.
if ZMQ is currectly loaded, and your code still doesn't work, the another possible reason is use of namespace. If your post.php is like
<?php
namespace Some\NameSpace;
$context = new ZMQContext();
Then it means ZMQContext in namespace Some\NameSpace, the full quanlified classname is Some\NameSpace\ZMQContext, which doesn't exists. So you may need use \ZMQContext
for class out of current namespace.
If the extension is enabled you still need to use this:
use \ZMQContext;
use \ZMQ;
(or alternatively directly access them using a leading "\")
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With