Расширение php не загружено

Используя файл .user.ini с extension=geoip.so (или mysqli.so), я безуспешно пытаюсь загрузить соответствующий модуль: на странице phpinfo() Php 7.1 (или даже Php5.4) модуль никогда не отображается.

1) Файл .user.ini работает правильно, потому что я могу изменить переменную memory_limit.

2) Функция phpinfo() правильно показывает папку extension_dir, содержащую расширения .so, которые я хочу загрузить (однако в файле php.ini этой переменной нет).

3) Журнал ошибок php не содержит сообщения.

Каждое предложение приветствуется.


person Mkgl    schedule 05.09.2017    source источник


Ответы (2)


Файлы .user.ini могут устанавливать только определенные настройки PHP ini. Так уж получилось, что параметр extension не является одним из них. На самом деле, согласно руководству, параметр extension действителен только в основной php.ini файл. Так что поместите extension=geoip.so в свой основной файл php.ini.

В качестве примечания: я использую Ubuntu/Debian для большей части того, что я делаю с PHP. Стандартный дистрибутив PHP, доступный в архивах пакетов Debian, содержит дополнительный код, скомпилированный в него, что позволяет использовать распределенную конфигурацию. Это работает следующим образом: модуль SAPI сканирует каталог conf.d и включает любые файлы ini. Обычно, когда вы упаковываете внешнее PHP-расширение для Debian (которое, я могу добавить, мучительно — я сделал это для своих собственных расширений), вы включаете небольшой файл ini, который включает расширение (например, extension=myext.so). Пакет устанавливает его в каталог распределенной конфигурации, и он включается в файл php.ini при запуске PHP. Возможно, вы хотели установить такую ​​конфигурацию на основе Debian?

Еще одно примечание: поскольку вы, вероятно, используете CGI SAPI и можете захотеть, чтобы разные сайты загружали разные модули (исключительно), вы могли бы попытаться заставить веб-сервер указывать CGI PHP на другой php.ini файл. Я просто предполагаю, что вы хотите добиться чего-то подобного. Однако загрузка модулей для определенных каталогов с использованием файлов .user.ini просто невозможна.

person Roger Gee    schedule 11.09.2017

Попробуйте отключить или настроить selinux. Проверьте журнал аудита selinux.

person user2960119    schedule 04.02.2019