Настройка параметров PHP в php.ini
🕛 18.10.2006, 15:16
php имеет множество настроек, описанных в файле php.ini. Этот файл должен быть доступен в системных путях поиска для того, чтобы php мог использовать эти настройки. Обычно для этого достаточно хранить этот файл в том же каталоге, где расположен сам php, но если php сконфигурирован для работы в качестве модуля web-сервера, то этот файл необходимо скопировать в каталог, явно доступный в системных путях поиска. См. раздел инсталляции php для получения более подробных инструкций.Здесь рассматриваются основные параметры php, разделенные по категориям. Список параметров в основном соответствует версии php 4.0.6, однако здесь рассматриваются только основные параметры. Полный список параметров с комментариями по каждому из них можно увидеть непосредственно в php.ini, а также в соответствующем разделе php manual.
Значения параметров, имеющих варианты "да/нет" могут быть следующими:
ДА - 1, on, true or yes
НЕТ - 0, off, false or no
short_open_tag
Включение поддержки сокращенного варианта php тегов. Если эта опция отключена, то php код будет распознаваться только внутри тегов. Если включена - то разрешено использование тегов . Хорошим тоном считается не использовать сокращенной записи php тегов.
asp_tags
Включение поддержки asp тегов <% %> в качестве php тегов.
output_buffering
Включение буферизированного вывода php. Использование буферизированного вывода позволит вам, к примеру, использовать любые функции, оперирующие с http header'ами (header(), setcookie()) в любом месте вашего скрипта, не заботясь о том, чтобы не выводить ничего до этого. Вы можете управлять буферизированным выводом и из ваших скриптов (см. раздел output control functions в php manual). Помните, что при включенной буферизации вывода результат работы скрипта будет возвращен браузеру только после того, как будет закончена работа скрипта, что может привести к более медленной работе сайта.
safe_mode
Включение безопасного режима работы php. Безопасный режим запрещает скриптам производить любые действия, которые являются небезопасными для сервера, на котором работает php. Очень подробно безопасный режим работы php рассматривается в php manual.
max_execution_time
Максимальное время работы php скрипта (в секундах). Спустя это время работа скрипта будет принудительно завершена и выдана соответствующая ошибка. Позволяет избежать проблем с "зациклившимися" скриптами.
memory_limit
Максимальный объем памяти, который может быть выделен для нужд скрипта. Также позволяет избежать проблем с "зациклившимися" скриптами.
error_reporting
Маска для сообщений об ошибках, которые должны генерироваться php. Задается в виде логического выражения с использованием набора предопределенных констант, описывающих различные типы ошибок. Список этих констант, а также правила задания выражений можно найти в php.ini.
display_errors
Определяет, нужно ли выводить сообщения об ошибках на экран. Обычно эта опция включается во время написания php скриптов, для того, чтобы иметь возможность видеть сообщения об ошибках, а на реальных серверах в интернете она обычно выключена по соображениям безопасности.
log_errors
Если включена эта опция, то все ошибки будут записываться в log файл, определенный следующей опцией.
error_log
Путь и имя файла, куда будут записываться все сообщения об ошибках, генерируемых php. Для систем поддерживающих системный журнал ошибок можно установить значение этого параметра равным syslog, для того, чтобы перенаправить все сообщения об ошибках туда.
track_errors
Если включена эта опция, то текст последней ошибки будет всегда доступен из переменной $php_errormsg.
register_globals
Этот параметр определяет, будут ли т.н. egpcs переменные (environment, get, post, cookies, session) доступны в виде глобальных переменных php. Если этот параметр разрешен, то переменные доступ к этим переменным будет осуществляться также, как и к любым другим глобальным переменным php:
echo "Версия http протокола: ".$server_protocol; echo "Параметр query string: ".$param1; echo "Элемент формы: ".$txtfirstname; echo "Мои cookie: ".$mycookie; echo "Мои сессионные переменные: ".$mysessionvar;
Или то же самое, но с отключенным параметром:
echo "Версия http протокола: ".$http_env_vars['server_protocol']; echo "Параметр query string: ".$http_get_vars['param1']; echo "Элемент формы: ".$http_post_vars['txtfirstname']; echo "Мои cookie: ".$http_cookie_vars['mycookie']; echo "Мои сессионные переменные: ".$http_session_vars['mysessionvar'];
На первый взгляд это менее удобно, но отключение этого параметра имеет и свои преимущества:
php начинает работать немного быстрее, т.к. не тратится дополнительное время на создание множества переменных.
Нет риска того, что какие-то две переменные будут иметь одинаковые имена, что приведет к появлению ошибок в работе скрипта, которые будет очень сложно отловить в силу их неочевидности.
variables_order
Этот параметр используется в связке с предыдущим параметром и определяет, в какой последовательности производится регистрация глобальных egpcs переменных. Например, при значении по умолчанию (egpcs) переменные, переданные через get будут замещены переменными, переданными через post и имеющими то же имя. post-переменные (а также environment и get переменные) в свою очередь могут быть замещены значениями cookies с такими же именами и т.д.
magic_quotes_gpc
Включение этого параметра приведет к тому, что все данные, поступающие со стороны клиента (через get, post или cookie) будут обработаны: все кавычки (' и ") в них будут замещены соответственно сочетанием ' или ". С одной стороны это очень удобно, если планируется, например, вставлять эти данные в строки, передаваемые, например, sql серверу. Но с другой стороны это может привести к путанице, поэтому обычно надежнее использовать для этой цели функции addslashes() и stripslashes().
magic_quotes_runtime
Данный параметр аналогичен предыдущему за исключением того, что влияет на данные, поступающие из внешних источников, расположенных на стороне сервера (например, данные, поступающие от sql сервера или результаты работы внешних программ).
magic_quotes_sybase
Включение этой опции приведет к тому, что одинарные кавычки (') будут сдваиваться (''). Это необходимо для некоторых sql серверов, которые поддерживают только такой способ вставки кавычек в строки (interbase, ms sql, sybase и некоторые другие).
auto_prepend_file
Позволяет задать путь и имя файла, который будет автоматически добавляться в начало каждого php скрипта. Используется только если имеет непустое значение.
auto_append_file
То же самое, что предыдущий параметр, но добавление содержимого файла производится в конец каждого php скрипта.
extension_dir
Путь к каталогу, где лежат модули php. Обычно это подкаталог extensions в корневом каталоге php.