zeromq travaille pour phpcli, mais pas pour apache

Tout d’abord, j’ai vérifié toutes les questions liées, mais dans mon cas, il doit s’agir d’autre chose (j’ai essayé les solutions à partir de là);

J’ai installé zeromq en suivant ces instructions http://zeromq.org/bindings:php et tout fonctionne très bien lorsque je lance mon script php depuis la CLI

Le problème est en cours d’exécution à partir du serveur Apache, je reçois le

Fatal error: Class 'ZMQContext' not found in /var/www/i.php on line 19 

la ligne 19 est

 $context = new ZMQContext(); 

Ce que j’ai essayé:

1) J’ai couru le php_info (), j’ai découvert où se trouvent mes fichiers 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... 

J’ai donc ouvert ces fichiers et ajouté la ligne “extension = zmq.so”

N’a pas aidé.

2) J’ai ajouté les lignes suivantes au début de mon script:

 use \ZMQContext; use \ZMQ; 

Encore une fois, n’a pas aidé

3) J’ai vérifié les journaux d’erreur apache et j’ai trouvé ceci:

 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) J’ai donc vérifié où se trouve le zmq.so sur ma machine:

 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 

Alors, avez-vous une idée de ce qui pourrait être faux? Je vous remercie

Je dois prendre quelques suppositions, mais essayons:

Vous semblez avoir différentes versions de PHP installées ou vous avez mis à jour / rétrogradé votre PHP.

Vous avez le dossier /usr/lib/php5/20100525/ sur votre système qui appartient à PHP 5.4 sur une machine de type Debian (je pense). Mais votre PHP cherche le fichier dans /usr/lib/php5/20090626/ , qui, selon moi, appartient à PHP 5.3.

Votre PHP CLI semble fonctionner avec PHP 5.4, alors que le mod_php de votre Apache semble fonctionner avec 5.3.

Si cela est vrai, vous pouvez essayer de copier le zmq.so dans /usr/lib/php5/20090626/zmq.so/ et redémarrer Apache. Mais il pourrait échouer en raison d’une incompatibilité binary, s’il était construit avec PHP 5.4.

Dans ce cas, je vous recommande de mettre à jour votre mod_php vers PHP 5.4 (encore une fois?).

Donc je finis par le résoudre (merci à LXG de m’avoir orienté dans la bonne direction)

Tout d’abord, je dois supprimer manuellement mes versions compilées d’Apache et de PHP (en suivant quelques tutoriels sur SO)

puis en supprimant php et apache avec apt-get

réinstaller php et apache avec apt-get

réinstaller zmq (comstackr et faire des liaisons php)

Je n’ai pas les derniers php et apache, mais au moins le module est chargé à la fois dans Apache et dans php CLI