pecl не работает в режиме php CLI (с использованием mongoDB в Gearman) - PullRequest
2 голосов
/ 24 августа 2010

Для тестирования у меня есть gearman, работающий на localhost.Поэтому я запускаю файл gearman worker.php из командной строки php.Когда я проверяю это в обычном режиме apache, mongoDB работает просто отлично, но когда он запускается из рабочего файла gearman, я получаю сообщение об ошибке «Неустранимая ошибка: класс« Mongo »не найден».Теперь класс Mongo происходит из pecl и расширения mongo.so в php.ini.Так что да, пытаясь выяснить, почему PHP-файл запускается из CLI отличается.Использует ли он отдельный файл php.ini?

Ответы [ 3 ]

5 голосов
/ 24 августа 2010

Вы можете проверить, какие INI-файлы загружаются версией CLI, выполнив php --ini.Если ваш PHP был предоставлен дистрибутивом, вполне возможно, что он имеет два отдельных набора .ini, один для веб-интерфейса и один для CLI.Вы также можете получить эквивалентную информацию из phpinfo(), когда он работает в режиме онлайн.

Чтобы заставить его загружать определенный .ini, вы можете использовать php -c /path/to/file.ini.

0 голосов
/ 24 августа 2010

Звучит так, будто вы загружаете разные ini-файлы или у вас на компьютере установлено несколько экземпляров php, а apache использует другой.Сделайте скрипт v.php:

<?php phpinfo();

, затем попробуйте запустить его из CLI и затем просмотреть его через localhost.Например:

php v.php

и

http://localhost/v.php

0 голосов
/ 24 августа 2010

Ну, простой поиск / -name php.ini ответил на этот вопрос для меня.Так что да, есть отдельный файл php.ini.Где мне нужно было добавить расширение строки = mongo.so.

...