empr
@empr

PHP видит установленные вручную расширения только в режиме CLI. Как заставить его их увидеть при запуске в качестве модуля Apache?

Пренеприятнейшая ситуация — PHP 5.4, а также 5.5 на моём сервере (CentOS) наотрез отказываются видеть расширения, которые я устанавливаю сам.

Пробовал с Runkit и MongoDB, и везде одни и те же симптомы: при запуске скрипта через командную строку, а также при вызове php -m, эти расширения прекрасно работают и видны. Однако стоит вызвать скрипт через браузер, и на этом всё: Class Mongo not found.
То же самое с Runkit.

Первоначально подозревал, что может быть два разных php.ini, однако проверил через phpinfo — нет, в обоих случаях используется один и тот же конфиг. Более того, в обоих случаях PHP "подхватывает" mongo.ini (в котором строка: extension=mongo.so), что также видно в phpinfo(). Но само расширение не загружается.

display_startup_errors результата не даёт - тишина.
Выполнение setenforce 0 в командной строке также не помогло.

Файлы .so лежат в /usr/lib64/php/modules/, и в /usr/lib64/php-zts/modules/. В php.ini указан второй путь.
Собираются они нормально, без ошибок — как через pecl install, так и вручную.

В чём может быть дело?
  • Вопрос задан
  • 2930 просмотров
Пригласить эксперта
Ответы на вопрос 2
merryjane
@merryjane
Системный администратор
А прав на .so файлы хватает для apache?
Попробуйте для теста, например выставить 777.
Ответ написан
@dzenovich
Расширения для apache должны быть собраны с zts и лежать в папке /usr/lib64/php-zts/modules/. Это должны быть другие файлы, нежели в каталоге /usr/lib64/php/modules/, их нужно компилировать с другими флагами. Попробуйте использовать опцию --with-php-config при запуске ./configure перед сборкой модуля (сборка обычно состоит из трех частей: phpize, ./configure, make install).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы