Так что я столкнулся с чем-то, что я просто надеюсь, что смогу получить некоторое понимание. Есть чистая машина Centos с чистой установкой PHP. На нем также был установлен драйвер mongoDB. При доступе к веб-приложению через браузер оно продолжало жаловаться, что клиент mongo не существует. Все процедуры установки были соблюдены, php.ini
содержащиеся extension=mongo.so
и httpd перезапустил. PHP info()
не содержал монго конф. То, что закончилось работой, было добавлением mongo.ini
подать в /etc/php.d
каталог с extension=mongo.so
написано к нему.
Я получаю подлое подозрение php.ini
загружался неправильно, но я не понимаю почему. Причина, по которой я думаю, что это, например, это работало после добавления mongo.ini
, Во-вторых, есть несовпадающий PHP info()
выходы из интерфейса командной строки и браузера.
и из графического интерфейса
Оба из них были разорваны на несколько секунд. Никаких изменений конфигурации или перезапусков не было. По некоторым причинам вывод CLI говорит, что загруженный файл конфигурации был /etc/php.ini
что и ожидалось. Однако графический интерфейс браузера показывает (none)
, Что здесь происходит? Вот почему extension=mongo.so
никогда не загружался с php.ini
файл?
версии
Apache/2.4.6
PHP/5.4.16
CentOS Linux release 7.3.1611
[someUser@someServer etc]# find / -name php.ini
/etc/php.ini
Так ли это даже подходящее место для этого? или я должен перейти на другой форум?
Обновить
После прочтения Григорий ИлизировВ комментариях и проводя некоторые исследования, я думаю, что на вопрос ответят, если он хочет опубликовать его. Похоже, конфиги php для apache не загружались. Я только что предположил /etc/php.ini
файл был всем, что нужно было отредактировать. Теперь мне просто нужно выяснить, какого черта я собираюсь это сделать.
обновление 2
Вернулся к чистой установке и сделал все снова. На этот раз результаты CLI и веб-интерфейса те же, что и раньше, но теперь mongo не загружается вообще, несмотря на добавление в /etc/php.d/mongo.ini
, подозреваю, что SELinux вмешивается в apache. mongo.ini
больше не отображается в дополнительных разделах файла .ini. Отключение SELinux и перезагрузка позволяют ему загружаться в apache.
ЗАВЕРШЕНИЕ
Это действительно проблема SELinux. Теперь, это относится к SO для будущих пользователей?
Вы должны убедиться, что ваш PHP установил MongoDB extension.try use PHP -m
посмотрите, установлен ли у вас MongoDB.
Затем загрузите исходный код с https://github.com/mongodb/mongo-php-driver-legacy.
выполните следующие шаги, чтобы установить расширение:
tar zxvf mongo-x.x.x.tgz -C ../
cd mongo-x.x.x/
phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make clean
make
make install
extension=mongo.so //add this line to php.ini
после установки попробуйте запустить PHP -m
еще раз, посмотрите, если расширение установлено успешно.
для получения дополнительной информации вы должны прочитать PHP документ.http://php.net/manual/en/mongo.installation.php#mongo.installation.fedora
Это был действительно SELinux, мешающий доступу Apache к файлу конфигурации PHP. Добавление контекста безопасности исправило это.
semanage fcontext -at httpd_sys_content_t '/etc/php.ini'
semanage fcontext -at httpd_sys_content_t '/etc/php.d/(/.*)?'
restorecon -Rv /etc/
systemctl restart httpd