2010-08-24 5 views
2

Pour tester, j'ai gearman fonctionnant sur localhost. Donc, je lance le fichier worker.php gearman de la ligne de commande php. Quand je le teste en mode apache normal, mongoDB fonctionne très bien, mais quand il s'exécute à partir du fichier de l'opérateur Gearman, j'obtiens l'erreur "Erreur fatale: la classe 'Mongo' n'est pas trouvée". Maintenant, la classe Mongo vient de pecl et l'extension mongo.so dans php.ini. SO oui, en essayant de comprendre pourquoi un fichier php exécuté à partir de CLI est différent. Utilise-t-il un fichier php.ini séparé?pecl ne fonctionne pas en mode php CLI (impliquant mongoDB dans Gearman)

Répondre

5

Vous pouvez vérifier quels fichiers .ini sont chargés par la version CLI en faisant php --ini. Si votre PHP a été fourni par une distribution, il est très possible qu'il ait deux ensembles .ini séparés, un pour le Web et un pour l'interface de ligne de commande. Vous pouvez obtenir les informations équivalentes de phpinfo() lorsqu'il fonctionne également en ligne.

Pour le forcer à charger un fichier .ini particulier, vous pouvez utiliser php -c /path/to/file.ini.

0

Eh bien, une simple recherche/-name php.ini a répondu à cette question pour moi. Alors oui, il y a un fichier php.ini séparé. Où j'avais besoin d'ajouter l'extension de ligne = mongo.so.

0

Il semble que vous chargiez différents fichiers ini ou que vous ayez plusieurs instances de php installées sur votre machine et qu'apache en utilise une autre. Faire le script v.php:

<?php phpinfo(); 

puis essayez de l'exécuter à partir de la CLI, puis la visualisation via localhost. EG:

php v.php

et

http://localhost/v.php

Questions connexes