Я компилирую php и устанавливаю каталог моих модулей в / usr / lib64 / 20090626-zts
Я хотел бы изменить это на / usr / lib64 / php / modules, но не могу найти для этого вариант конфигурации.
Я могу изменить его в своем php.ini и переместить каталог, но когда я запускаю phpize и создаю новый модуль, он все равно помещает его в / usr / lib64 / 20090626-zts
Проверьте текущий каталог расширений с помощью:
php-config --extension-dir
и вы можете изменить его, установив extension_dir
в php.ini
:
extension_dir="/usr/lib64/php/modules"
Не забудьте перезапустить Apache.
Я бы предложил сделать / usr / lib64 / php / modules символической ссылкой на папку с идентификатором. Это предотвращает смешивание расширений из разных версий PHP в долгосрочной перспективе.
Кроме того: вы можете установить его, установив EXTENSION_DIR
в качестве переменной среды перед запуском PHP configure. что-то вроде
$ EXTENSION_DIR=/my/location ./configure --with-some-extension
Моя проблема не была идентична, но, поскольку этот вопрос был первым, на котором появились ответы, которые в конечном итоге оказались очень полезными, я добавлю свои комментарии.
Мне не удалось заставить PHP (под Centos7, работающим в контейнере докеров) использовать MySQL из-за конфигурации каталога, хотя я использовал предварительно созданные двоичные файлы и ничего не компилировал. Хотя различные модули pdo и mysqlnd.so и файлы .ini были установлены в моем контейнере (просто с использованием стандартных yum install php72
и все остальное, указанное в Мастер установки PHP), они не находились в местах по умолчанию, которые их искал PHP. Понятия не имею почему. Может это докеры какие то?
В любом случае, чтобы решить проблему, мне пришлось повторить extension_dir
директива моему PHP.ini
и ТАКЖЕ установите PHP_INI_SCAN_DIR
переменная env. Это соответствующие команды из моего Dockerfile
ENV PHP_INI_SCAN_DIR=/etc/php.d/
RUN echo 'extension_dir = "/usr/lib64/php/modules"' >> /etc/opt/remi/php72/php.ini
Я надеюсь, что это не приведет к конфликтам модулей позже, как предупреждает @johanes.