Возможности изменения конфигурации PHP для пользователя


Очень часто пользователю требуется так или иначе изменить настройки PHP для работы со скриптами. Существует два возможных варианта.


Случай 1. необходимо внести изменения на уровне компиляции (сборки) PHP (добавление модулей, изменение системных опций PHP_INI_SYSTEM).


Случай 2. достаточно изменить значение одной или нескольких опций, имеющих статус изменяемости PHP_INI_PERDIR или PHP_INI_ALL.


Напомним значение и расшифровку констант PHP_INI_*:

























PHP_INI_USER 1 Опция может быть установлена в пользовательских скриптах
PHP_INI_PERDIR 2 Опция может быть установлена в php.ini, .htaccess или httpd.conf
PHP_INI_SYSTEM 4 Опция может быть установлена в php.ini или httpd.conf
PHP_INI_ALL 7 Опция может быть установлена где угодно

 


В первом случае, когда нам нужно изменить конфигурацию PHP добавлением новых модулей (imap, templates, curl), с которыми не собран наш модульный PHP. Если это так, необходимо собрать свой PHP. После сборки рекомендуется скопировать наш INI-файл:


/usr/local/etc/php.ini

или


/usr/local/etc/php.ini

в зависмости от вида используемого SAPI-интерфейса (cgi или cli).


Во втором случае, когда не требуется использование каких-либо дополнительных модулей, а необходимо лишь изменить значение управляемых в php.ini директив — следует просто скопировать уже собранный исполняемый файл php-SAPI на площадку и произвести необходимые действия с .htaccess:


/usr/local/bin/php-cgi

или


/usr/local/bin/php

в зависмости от вида используемого SAPI-интерфейса.


В случае, если установленные значения директив в наших INI-файлах совпадают с желаемыми — копировать INI-файл не нужно. В частности, такие действия проводятся, когда требуется увеличить значение memory_limit для PHP. Если предполагается изменение директив в php-SAPI.ini — его следует скопировать, подобно описанному выше способу.


ls /usr/local/etc/php.ini | awk '{print $1}' | xargs grep memory_limit
/usr/local/etc/php.ini: memory_limit = 32M

Обратите особое внимание на то, что если в результате добавления своей директивы вы получили ошибку или не получили желаемого результата, то есть вероятность того, то конфигурирование соответствующего параметра просто недоступно на этом уровне. Если это так, попробуйте собрать свой PHP, но предварительно, пожалуйста, уточните у нашей технической поддержки действительно ли в этой ситуации вам нужен собственный PHP.