Как изменить настройки конфигурации
Когда PHP используется как модуль Apache вы также можете менять настройки конфигурации, используя директивы в файлах конфигурации Apache (например, httpd.conf ) и файлах .htaccess . Для этого вам необходимы «AllowOverride Options» или «AllowOverride All» привилегии.
Есть несколько директив Apache, которые позволяют вам изменить конфигурацию PHP посредством файлов конфигурации Apache. Директивы для PHP_INI_ALL , PHP_INI_PERDIR , и PHP_INI_SYSTEM , вы можете увидеть в приложении Список директив php.ini
Устанавливает значение обозначенной директивы. Может использоваться только с директивами типа PHP_INI_ALL и PHP_INI_PERDIR Для очистки предыдущих установленных значений используйте значение none.
Замечание: Не используйте php_value для установки логических значений. Вместо этого необходимо использовать php_flag (см. ниже).
Используется для установки директивам логических значений. Может быть использовано только с директивами типа PHP_INI_ALL и PHP_INI_PERDIR .
php_admin_value name value
Устанавливает значение обозначенной директивы. Не может быть использовано в файлах .htaccess . Директивы любого типа, установленные с помощью php_admin_value не могут быть переопределены через .htaccess или ini_set() . Чтобы очистить предыдущее значение используйте значение none.
php_admin_flag name on|off
Используется для установки директивам логических значений. Не может быть использовано в файлах .htaccess . Директивы любого типа, установленные с помощью php_admin_flag не могут быть переопределены через .htaccess или ini_set() .
Пример #1 Пример конфигурации Apache
php_value include_path ".:/usr/local/lib/php" php_admin_flag engine on php_value include_path ".:/usr/local/lib/php" php_admin_flag engine on
PHP константы не доступны вне PHP. К примеру, в httpd.conf вы не можете использовать константы PHP такие как E_ALL или E_NOTICE чтобы установить директиву error_reporting, так как они не будут иметь значения и будут приравниваться к 0. Используйте вместо этого соответствующие значения типа bitmask (битовая маска). Эти константы могут быть использованы в php.ini
Изменение конфигурации PHP через реестр Windows
При использовании PHP в Windows значения конфигурации могут быть изменены на уровне директории посредством реестра Windows. Значения конфигурации хранятся в ключе реестра HKLM\SOFTWARE\PHP\Per Directory Values, в под-ключах, включающих полный путь. К примеру, значения конфигурации для директории c:\inetpub\wwwroot могут храниться в ключе HKLM\SOFTWARE\PHP\Per Directory Values\c\inetpub\wwwroot. Настройки для директории будут действительны для любых скриптов запущенных из этой директории или её поддиректории. Значения ключа должны иметь название конфигурационной директивы PHP и строковое значение. PHP константы в значениях игнорируются. Однако, только значения конфигурации изменяемые в PHP_INI_USER могут быть установлены таким образом, значения же PHP_INI_PERDIR не могут.
Другие интерфейсы в PHP
Независимо от того, как вы запускаете PHP, вы можете изменять некоторые значения во время выполнения ваших скриптов помощью ini_set() . Для более детальной информации смотрите документацию на странице функции ini_set() .
Если вам интересен полный список конфигурационных настроек вашей системы с текущими значениями, то вы можете запустить phpinfo() функцию, и получить результирующую страницу. Вы также можете получить доступ к значениям индивидуально сконфигурированных директив в процессе выполнения, используя ini_get() или get_cfg_var() .
Php ini как переопределить
Когда PHP используется как модуль Apache вы также можете менять настройки конфигурации, используя директивы в файлах конфигурации Apache (например, httpd.conf ) и файлах .htaccess . Для этого вам необходимы «AllowOverride Options» или «AllowOverride All» привилегии.
Есть несколько директив Apache, которые позволяют вам изменить конфигурацию PHP посредством файлов конфигурации Apache. С директивами PHP_INI_ALL , PHP_INI_PERDIR и PHP_INI_SYSTEM можно ознакомиться в приложении Список директив php.ini.
Устанавливает значение указанной директивы. Может использоваться только с директивами типа PHP_INI_ALL и PHP_INI_PERDIR . Для очистки предыдущих установленных значений используйте значение none .
Замечание: Не используйте php_value для установки логических значений. Вместо этого необходимо использовать php_flag (смотрите ниже).
Используется для установки директивам логических значений. Может быть использовано только с директивами типа PHP_INI_ALL и PHP_INI_PERDIR .
php_admin_value name value
Устанавливает значение указанной директивы. Не может быть использовано в файлах .htaccess . Директивы любого типа, установленные с помощью php_admin_value не могут быть переопределены через .htaccess или ini_set() . Чтобы очистить предыдущее значение используйте значение none .
php_admin_flag name on|off
Используется для установки директивам логических значений. Не может быть использовано в файлах .htaccess . Директивы любого типа, установленные с помощью php_admin_flag не могут быть переопределены через .htaccess или ini_set() .
Пример #1 Пример конфигурации Apache
php_value include_path ".:/usr/local/lib/php" php_admin_flag engine on php_value include_path ".:/usr/local/lib/php" php_admin_flag engine on
PHP-константы недоступны вне PHP. К примеру, в httpd.conf вы не можете использовать константы PHP такие как E_ALL или E_NOTICE , чтобы установить директиву error_reporting, так как они не будут иметь значения и будут приравниваться к 0. Используйте вместо этого соответствующие значения типа bitmask (битовая маска). Эти константы могут быть использованы в php.ini
Изменение конфигурации PHP через реестр Windows
При использовании PHP в Windows значения конфигурации могут быть изменены на уровне директории посредством реестра Windows. Значения конфигурации хранятся в ключе реестра HKLM\SOFTWARE\PHP\Per Directory Values , в подключах, включающих полный путь. К примеру, значения конфигурации для директории c:\inetpub\wwwroot могут храниться в ключе HKLM\SOFTWARE\PHP\Per Directory Values\c\inetpub\wwwroot . Настройки для директории будут действительны для любых скриптов, запущенных из этой директории или её поддиректории. Значения ключа должны иметь название конфигурационной директивы PHP и строковое значение. PHP-константы в значениях игнорируются. Однако только значения конфигурации, изменяемые в PHP_INI_USER могут быть установлены таким образом, значения же PHP_INI_PERDIR не могут, потому что эти значения конфигурации перечитываются для каждого запроса.
Другие интерфейсы в PHP
Независимо от того, как вы запускаете PHP, вы можете изменять некоторые значения во время выполнения ваших скриптов c помощью ini_set() . Для более детальной информации смотрите документацию на странице функции ini_set() .
Если вам интересен полный список конфигурационных настроек вашей системы с текущими значениями, то вы можете запустить функцию phpinfo() и просмотреть результирующую страницу. Вы также можете получить доступ к значениям индивидуально сконфигурированных директив в процессе выполнения, используя ini_get() или get_cfg_var() .
Как переопределить параметры конфигурации 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 может использоваться для любых других. Например, следующий файл .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_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 когда-либо вызывала у вас проблемы при переносе приложения на другой сервер?