Deonisius
@Deonisius
Родился в 11110110111 году, 11000 января.

Возможно ли изменить приоритет настроект php.ini?

Приветствую! Для начала, общая инфа:
1. Centos 6.5
2. Nginx 1.6.2 (front-end) + Apache 2.2.15 (back-end)
3. PHP 5.4.33 - в режиме CGI
4. ISPManager 4

Суть проблемы:
У каждого виртуального хоста, есть свой пользовательский php.ini (в общем, это и так понятно), в котором по умолчанию описаны две директивы: sendmail_path и session.save_path. В глобальном php.ini ("/etc/php.ini"), прописал все общие необходимые настройки. Однако, эти настройки не подхватываются. К примеру, прописал я для "disable_functions" список функций в общем php.ini, рестартонул Apache и на любом виртуальном хосте, та же функция exec() выполнится без проблем. Если директиву прописать в пользовательском файле php.ini, то всё отрабатывает как и полагается, но писать одно и тоже для всех хостов вручную - как-то не кошерно.

Как решил на данном этапе:
Создал файл php.ini в директории "php.d", где и прописал все необходимые директивы, которые распространяются на все хосты.

Что не устраивает:
Приоритет php.ini в директории "php.d" имеет приоритет выше, чем пользовательский. Да, если смотреть относительно той же директивы "disable_functions", то это можно считать плюсом, но в большей степени - это всё же минус. К примеру, в общих настройках, я укажу временную зону Гондураса. Тогда юзер уже не сможет эту зону изменить в своём php.ini.

Что хотел бы иметь в идеале:
Собственно, обратную приоритетность. То есть, если в пользовательском php.ini не прописана какая-то директива, то она подхватывается из общего php.ini, а если директива прописана у юзера, то именно она вступает в силу.
Буду признателен, если кто-нибудь подскажет, как это лучше сделать.
  • Вопрос задан
  • 2774 просмотра
Пригласить эксперта
Ответы на вопрос 1
@ShamblerR
Собственно оно так и должно работать
Ваш скрипт должен копировать при генераци пользователю php.ini ваш основной конфиг.
И копировать его при каждом изменение в админке, плюс накладывать на него, банально тупо в самый низ его кастомные настройки, в таком случае так и будет происходить.

Если же вамнужно принудительно изменить всем настройки то вот я давно уже написал о этом на вики.

find . -name 'php.ini' -exec sed -i 's/log_errors = Off/log_errors = On/g' "{}" \;
Ответ написан
Ваш ответ на вопрос

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

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