#php #mongodb #doctrine-orm #zend-framework2 #odm
#php #apache #mongodb #установка #wamp
Вопрос:
Я пытаюсь выполнить это:
<?php
// connect
$m = new Mongo();
?>
Но я получаю следующую ошибку:
Фатальная ошибка: класс ‘Mongo’ не найден в C:wampwww …..
Информация:
- PHP: 5.38
- MongoDB: mongodb-win32-i386-2.0.2
- Драйвер MongoDB PHP: mongo-1.1.4-php5.3vc6ts
- WampServer: 2.2
- ОС: Windows 7 Enterprise SP1
Я выполнил установку MongoDB нормально (вкл. добавив DLL в ext amp; php.ini), я начал mongod.exe и ВАМПИР бежит.
Что это означает, отсутствует / неверно?
Редактировать:
Я запустил его на другом компьютере с Windows 7 (Windows 7 Profressional). Это вызвало у меня любопытство. Итак, теперь мой компьютер с Windows 7 Enterprise SP1 имеет то же http.conf
php.ini
C:wampbinmongodb
содержимое , , (поэтому базы данных точно такие же) и тот же пакетный файл для запуска mongod.exe
, что и мой компьютер Win7 Professional.
Но все же, все, что я могу сделать на своем компьютере Win7 Enterprise SP1, это подключиться через командную строку. Мой компьютер Win7 Professional phpinfo()
содержит:
Мой компьютер Win7 Enterprise SP1 не содержит никаких ссылок на MongoDB.
Содержимое пакетного файла, который я использую для запуска MongoDB:
"C:wampbinmongodbbinmongod.exe" --logpath "C:wampbinmongodblogserror.log" --logappend --dbpath "C:wampbinmongodbdatadb" --directoryperdb --service
Net Start "MongoDB"
pause
Комментарии:
1. вы перезапустили apache? также проверьте, правильно ли вы отредактировали
php.ini
(тот, который указанphpinfo()
как загруженный `2. @Mchl Да, я перезапустил и да, я отредактировал правильный
php.ini
в соответствии сphpinfo()
3. Просто для проверки: для www php.ini
C:wampbinapacheapache2.x.ybin
включен. Для CLI php.ini находится вC:wampbinphpphp5.3.8
4. @Mchl
phpinfo()
говоритphp.ini
, что загруженный находится вC:wampbinapacheApache2.2.21binphp.ini
, и это тот, к которому я добавилextension=php_mongo.dll
.5. Это должно быть хорошо. Я не уверен, на что еще посмотреть.
Ответ №1:
Проблема заключалась в драйвере PHP ( php_mongo.dll
). Apache / WAMP просто mongo-1.1.4-php5.3vc6ts
по какой-то причине не понравилась версия. На моем компьютере с Windows 7 Professional была эта mongo-1.2.5-php5.3vc9ts
версия. Это была единственная разница между двумя машинами.
Первоначально я использовал mongo-1.2.5-php5.3vc9ts
версию драйвера на компьютере Windows 7 Enterprise, но перешел на mongo-1.1.4-php5.3vc6ts
версию, когда устранял проблему. Таким образом, исходная проблема могла заключаться в том, что путь к базе datadb
данных не существовал / не мог быть найден (и его нужно было указывать --dbpath
при запуске / запуске mongod.exe
).
Комментарии:
1. Это очень сложно, потому что вам нужно установить
php_mongo.dll
, а неphp_mongodb.dll
. в библиотеке PECL присутствуют 2 пакета. Также для vc6 и vc9 требуется соответствующая установленная распространяемая библиотека C . Версия x86 или x64 зависит от скомпилированной версии Apache
Ответ №2:
Если эта проблема существует в php CLI, вы должны добавить extension=mongo.so
в свой /etc/php5/cli/php.ini
файл
Ответ №3:
Проверьте точное имя компилятора вашего двоичного файла PHP на странице phpinfo и попробуйте переустановить драйвер mongo, созданный на том же компиляторе.
http://www.php.net/manual/en/mongo.installation.php#mongo.installation .Windows
Теперь вы используете драйвер mongo, который был установлен в Visual Studio 6 с потокобезопасностью. (vs6ts означает это)
Аналогичная проблема была вызвана проблемой компилятора;
Ответ №4:
В Ubuntu я использовал этот учебник . После установки повторите phpinfo() и проверьте, находится ли файл mongo.ini в правильном каталоге, указанном в phpinfo, с помощью «Сканировать этот каталог на наличие дополнительных файлов .ini»