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