Ошибка доступа к php MongoDB из браузера

Я установил Mongodb.so и необходимые библиотеки php, это рабочий файл в командной строке, используя следующий тестовый код, но посещение того же файла в браузере продолжает выдавать ошибку (работает на Apache 2.4 + php 5.6), может ли кто-нибудь дать мне подсказку?

Неустранимая ошибка: класс MongoDB \ Driver \ Manager не найден в ./vendor/mongodb/mongodb/src/Client.php в строке 56

тестовый код следующим образом:

<?php
$filename='./vendor/autoload.php';
require $filename;
$client = new MongoDB\Client("mongodb://localhost:27017");
$collection = $client->demo->beers;
$result = $collection->insertOne( ['name' => 'Hinterland', 'brewery' => 'BrewDog'] );
echo "Inserted with Object ID '{$result->getInsertedId()}'";
?>

также проверка командной строки показывает, что библиотека уже загружена в php php -m | grep mongo mongodb


person eversun    schedule 11.03.2016    source источник
comment
Подсказка: добавили ли вы расширение mongodb к правильному файлу php.ini, обычно их 2, 1 для использования Apache и одно для использования CLI PHP. Вы, очевидно, изменили версию PHP CLI, но, вероятно, пропустили версию Apache   -  person RiggsFolly    schedule 11.03.2016
comment
файл php.ini такой же, но cli использует другую папку для дополнительных файлов .ini /etc/php-zts.d, поэтому я скопировал mongodb.ini поверх, теперь я вижу / etc / php -zts.d / mongodb.ini загружается на страницу phpinfo, я все еще не вижу элемента mogodb в списке, и та же ошибка все еще отображается при посещении тестового URL-адреса из браузера, есть идеи, как решить проблему?   -  person eversun    schedule 11.03.2016


Ответы (2)


Не пропустите подробности в файле журнала ошибок. Ваш интерфейс командной строки и веб-скрипты могут обращаться к разным путям или библиотекам. Убедитесь, что файл php.ini имеет одинаковый путь в обеих средах. Цель состоит в том, чтобы в обоих случаях использовать одни и те же файлы библиотеки.

person Bimal Poudel    schedule 11.03.2016
comment
Я дважды проверил, php -i показывает, что файл конфигурации /etc/php.ini - person eversun; 12.03.2016
comment
phpinfo в браузере также показывает /etc/php.ini как файл конфигурации, а также дополнительный файл загрузки, оба содержат файл mongodb.ini, который загружает файл mangodb.so. тот же mongodb.so можно без проблем использовать в php cli, однако файл httpd error_log показывает ошибку: Запуск PHP: невозможно загрузить динамическую библиотеку '/usr/lib64/php-zts/modules/mongodb.so', mongodb .so: неопределенный символ: file_globals in Unknown в строке 0 - person eversun; 12.03.2016
comment
дополнительная информация из файла error_log, посоветуйте, как решить проблему? Предупреждение PHP: Запуск PHP: невозможно загрузить динамическую библиотеку '/usr/lib64/php-zts/modules/mongodb.so' - / usr / lib64 / php -zts / modules / mongodb.so: неопределенный символ: file_globals in Unknown в строке 0 - person eversun; 13.03.2016
comment
Вы можете попробовать переместить mongodb.so в общий каталог extension_dir PHP с такими же разрешениями chown / chmod, как и другие существующие расширения. - person Bimal Poudel; 13.03.2016
comment
Я поместил файл в общий каталог extension_dir PHP, не помогло. Запуск PHP: невозможно загрузить динамическую библиотеку '/usr/lib64/php/modules/mongodb.so' - /usr/lib64/php/modules/mongodb.so: неопределенный символ: file_globals in Unknown в строке 0 - person eversun; 14.03.2016
comment
имеет значение другая версия php api? это то, что я получаю phpize --version Настройка для: PHP Api Version: 20131106 Zend Module Api №: 20131226 Zend Extension Api №: 220131226 - person eversun; 14.03.2016

Взгляните на переменную среды path. Мне пришлось изменить путь для правильного запуска php7. У меня там был установлен путь php5.

person Sergio    schedule 18.03.2016