zeromq работает для phpcli, но не для apache

Прежде всего, я проверил все связанные вопросы, но в моем случае это должно быть что-то еще (я пробовал решения оттуда);

Я установил zeromq, следуя этим инструкциям http://zeromq.org/bindings:php и все работает отлично, когда я запускаю свой PHP-скрипт из CLI

Проблема запускается с сервера 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

Так есть ли у вас какие-либо предположения, что еще может быть не так? Спасибо

1

Решение

Я должен сделать несколько предположений, но давайте попробуем:

Похоже, у вас установлены разные версии PHP или вы обновили / понизили версию PHP.

У вас есть папка /usr/lib/php5/20100525/ в вашей системе, которая принадлежит PHP 5.4 на машине типа Debian (я думаю). Но ваш PHP ищет файл в /usr/lib/php5/20090626/, который я думаю, принадлежит PHP 5.3.

Ваш PHP CLI, кажется, работает с PHP 5.4, в то время как mod_php вашего Apache, кажется, для запуска 5.3.

Если это правда, вы можете попробовать скопировать zmq.so в /usr/lib/php5/20090626/zmq.so/ и перезапустите Apache. Но он может потерпеть неудачу из-за двоичной несовместимости, если он построен на PHP 5.4.

В этом случае я бы рекомендовал обновить ваш mod_php в PHP 5.4 (снова?).

2

Другие решения

Так что я наконец-то решил (спасибо lxg за то, что указал мне правильное направление)

Прежде всего, я должен вручную удалить мои скомпилированные версии apache и php (следуя некоторым урокам здесь, на SO)

затем удаление php и apache с помощью apt-get

переустановка php и apache с помощью apt-get

переустановка zmq (скомпилировать и сделать привязки php)

У меня нет последних php и apache, но по крайней мере модуль загружается как в Apache, так и в php CLI

1

По вопросам рекламы [email protected]