MongoDB / PHP на WAMP - phpinfo против php -i - PullRequest
2 голосов
/ 11 января 2012

Я пытаюсь настроить MongoDB с PHP и WAMP. У меня был установлен WAMP 64 бит, но я вижу, что драйверы PHP с этим не работают, поэтому я удалил его и установил 32 бит. Я скачал драйверы PHP отсюда: http://downloads.mongodb.org/mongo-latest-php5.3vc9ts.zip, поместил dll в ext и добавил расширение в мой php.ini.

Я не получаю никаких ошибок при запуске WAMP, но мой phpinfo () не отображает Mongo в списке, и когда я пытаюсь что-то простое, как

$m = new Mongo(); // connect

Я получаю эту ошибку:

( ! ) Fatal error: Class 'Mongo' not found in C:\development\uswom\btf\test\mongo.php on line 3

Мой phpinfo показывает эту информацию:

Build Date  Aug 23 2011 11:47:20
Compiler    MSVC9 (Visual C++ 2008)
Architecture    x86 
PHP API     20090626
PHP Extension   20090626
Zend Extension  220090626
Zend Extension Build    API220090626,TS,VC9
PHP Extension Build     API20090626,TS,VC9 

Когда я делаю php -i из командной строки, он показывает, что Монго загружен:

mongo

MongoDB Support => enabled
Version => 1.2.7-

Directive => Local Value => Master Value
mongo.allow_empty_keys => 0 => 0
mongo.allow_persistent => 1 => 1
mongo.auto_reconnect => 1 => 1
mongo.chunk_size => 262144 => 262144
mongo.cmd => $ => $
mongo.default_host => localhost => localhost
mongo.default_port => 27017 => 27017
mongo.long_as_object => 0 => 0
mongo.native_long => 0 => 0
mongo.no_id => 0 => 0
mongo.utf8 => 1 => 1

WAMP - единственный php, который я установил, и чтобы убедиться, что мой CLI PHP совпадает с моим WAMP phpinfo, я проверил детали, и они совпадают:

Build Date => Aug 23 2011 11:47:20
Compiler => MSVC9 (Visual C++ 2008)
Architecture => x86
PHP API => 20090626
PHP Extension => 20090626
Zend Extension => 220090626
Zend Extension Build => API220090626,TS,VC9
PHP Extension Build => API20090626,TS,VC9

Наконец, «где php» показывает мне, что командная строка запускает PHP из моей установки WAMP: C: \ Program Files (x86) \ wamp \ bin \ php \ php5.3.8 \ php.exe

1) Любая идея, почему CLI "php -i" показывает, что Mongo загружен, а phpinfo () нет?

2) Я предполагаю, что мой вызов "new Mongo ()" не работает по той же причине, что phpinfo () не показывает мне, что Mongo загружен, но я не уверен, с чего начать отладку Mongo проблема с загрузкой. Я проверил wamp / logs / apache_error.log, и он не показывает ошибок при запуске.

Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 11 января 2012

Ваш вопрос неясен: видите ли вы расширение mongo на странице phpinfo ()?

Если нет, то знайте, что часто CLI не использует php.ini, чем Apache (phpinfo).()).

Найдите правильный php.ini для редактирования, обычно называемый php-cli.ini.Скорее всего, он находится в той же папке, что и php.ini.Иногда он даже находится в c:\Windows, поэтому смотрите внимательно.

Используйте «проанализированные файлы php ini» на странице phpinfo (), это даст вам право на правильный файл для редактирования.

Также, пожалуйста, подтвердите, что у вас установлена ​​только одна версия PHP, потому что WAMP может обрабатывать много PHP-движков на каждый экземпляр.

надеюсь, это поможет!

update : и, как напоминание, перезапускайте службу Apache при каждом изменении конфигурации

2 голосов
/ 06 мая 2012

У меня была похожая проблема с WAMP и расширением Mongo php.

Я заметил в своем журнале ошибок Apache, что он находит mongo .dll в / ext, но задыхался. После некоторого устранения неполадок я понял, что у меня была 64-битная версия WAMP, но mongo php .dll распространяется только с Github как 32-битная.

Таким образом, я переустановил WAMP, используя 32-битный дистрибутив вместо 64-битного (полагаю, я мог бы также создать расширение mongo как 64-битный .dll).

Затем я установил поточно-ориентированную версию mongo php, и она загрузилась в мое резюме phpInfo, и теперь я могу получить доступ к функциям, которые решили ее для меня.

...