Статьи

Как переопределить параметры конфигурации PHP

настроить PHP Настроить PHP легко. Вы можете изменить практически любой аспект интерпретатора в файле конфигурации php.ini, например, изменить обработку ошибок, увеличить использование памяти и т. Д.

К сожалению, могут возникнуть проблемы, когда вы перемещаете свое приложение в среду живого хостинга или распространяете код среди клиентов. Интернет-провайдеры обычно блокируют файл конфигурации php.ini — особенно на виртуальном хостинге. Это может привести к сбою приложения.

К счастью, нет необходимости переходить на дорогой выделенный сервер. Два метода ниже позволяют вам переопределить настройки PHP в вашем приложении.

Директивы модуля Apache

Большинство интернет-провайдеров предоставляют хостинг веб-серверов Apache на платформах Linux или Unix. Надеемся, что они также предоставили привилегии «AllowOverride Options» или «AllowOverride All» в конфигурации Apache httpd.conf. Это позволяет вам создать файл .htaccess в корневой папке вашего приложения, переопределяя настройки Apache и PHP по умолчанию.

В .htaccess разрешены две PHP-директивы:

  • php_flag <логическое-имя-флага> вкл | выкл
  • php_value <имя-флага> <значение-флага>

php_flag должен использоваться для значений вкл / выкл, тогда как php_value может использоваться для любых других. Например, следующий файл .htaccess отключит глобальные переменные, установит максимальный размер загружаемого файла 20 МБ и позволит PHP-сценариям работать в течение 10 минут (600 секунд):


php_flag register_globals off
php_value upload_max_filesize 20M
php_value max_execution_time 600

Однако решение не будет работать во всех установках Apache или других веб-серверах, таких как IIS.

PHP Runtime Configuration

Более переносимым, независимым от сервера решением является функция ini_set в PHP. — это позволяет вам изменять настройки в вашем приложении во время выполнения. Функция принимает два аргумента: ini_set ( flag-name , flag-value ) , например

 
<?php
ini_set('register_globals', 0);
ini_set('upload_max_filesize', '20M');
ini_set('max_execution_time', 600);
?>

Логические значения, числа и строки могут использоваться взаимозаменяемо — PHP попытается привести значение к соответствующему типу.

Доступны несколько связанных функций:

ini_get ( flag-name )
Возвращает значение конфигурации. Я бы порекомендовал проверить изменения вашей конфигурации и принять соответствующие меры. Не думайте, что ini_get () всегда будет работать.

ini_get_all ([ расширение ])
Возвращает все значения конфигурации в виде ассоциативного массива. Необязательный параметр расширения возвращает параметры, специфичные для этого расширения, например, «allow_url_fopen».

get_cfg_var ( flag-name )
Возвращает исходное значение конфигурации из php.ini (не любые переопределения, установленные в .htaccess или ini_set).

ini_restore ( флаг-имя )
Возвращает опцию конфигурации к ее первоначальному значению.

Скоро: как работать с незагруженными расширениями PHP .

Конфигурация PHP когда-либо вызывала у вас проблемы при переносе приложения на другой сервер?