php.ini с пояснениями на русском языке
Если вы установили PHP как модуль Apache, перед вами открываются дополнительные возможности: вы можете задавать значения некоторых директив прямо в файлах httpd.conf или .htaccess. В силу специфики синтаксиса файлов конфигурации Apache, для отделения имени директивы и ее значения нужно использовать пробел, а не знак =. Кроме того, имена директив PHP должны быть предварены префиксом php_. Например, директива из php.ini auto_prepend_file=top.html будет выглядеть в httpd.conf или .htaccess так: php_auto_prepend_file top.html.
Приведенного листинга с комментариями должно быть вполне достаточно для понимания роли большинства директив PHP.
[PHP] ;;;;;;;;;;;;;;;;; ; Об этом файле ; ;;;;;;;;;;;;;;;;; ; Этот файл содержит большинство установок PHP. Чтобы PHP смог его ; обнаружить, он должен называться 'php.ini'. Интерпретатор ищет файл в ; текущем каталоге, в случае неудачи — в каталоге, указанном в ; переменной окружения PHPRC, и, наконец, в каталоге, заданном при ; компиляции и сборке PHP (именно в таком порядке). ; В системе Windows путь, указанный при компиляции PHP, ; соответствует каталогу Windows (в большинстве случаев это ; c:\windows). Папка, в которой будет производиться поиск файла ; 'php.ini', может быть также определена с использованием ключа –c ; командной строки. ; ; Синтаксис файла крайне прост. Пробельные символы (то есть, пробелы, ; символы табуляции и т. д.), строки, начинающиеся с точки с запятой (;) ; игнорируются (как вы, наверное, уже догадались). Заголовки секций ; (например, [Foo]) также пропускаются, но, возможно, будут учитываться ; в будущих версиях PHP. ; ; Директивы задаются примерно так: ; directive=value ; Имена директив чувствительны к регистру символов — foo=bar не то же ; самое, что FOO=bar. ; ; Значение value может быть строкой, числом, константой PHP (например, ; E_ALL или M_PI), одной из INI-констант (On, Off, True, False, Yes, No ; или None), выражением (например, E_ALL & ~E_NOTICE), а также строкой ; в кавычках ("foo"). ; ; В выражениях могут использоваться только побитовые и логические ; операторы, а также скобки: ; | поразрядное ИЛИ (OR) ; & поразрядное И (AND) ; ~ поразрядное НЕ (NOT) ; ! логическое отрицание (NOT) ; ; В качестве логических флагов со значением "истина" могут быть ; использованы значения 1, On, True или Yes. Значение "ложь" дают 0, Off, ; False и No. ; ; Пустая строка может быть задана, если "не указать ничего" после знака ; равенства, или же указать слово None: ; foo= ; устанавливаем foo равным пустой сторке ; foo=none ; аналогично ; foo="none" ; устанавливаем foo равным строке 'none' ; ; Если вы используете константы в качестве части значения директивы и эти ; константы определяются в каком-нибудь динамически загружаемом ; расширении (модуле PHP или Zend), вы можете указывать их только после ; строки, которая загружает расширение. ; ; Все значения в файле php.ini-dist соответствуют встроенным значениям ; по умолчанию. Если php.ini не задействуется, или же вы удалите из него ; некоторые строки, будут установлены значения по умолчанию. ;;;;;;;;;;;;;;;;;;; ; Настройки языка ; ;;;;;;;;;;;;;;;;;;; ; Разрешает работу PHP для сервера Apache. engine=On ; Разрешает использовать короткие тэги <?. Иначе будут распознаваться ; только тэги <?php и <script>. short_open_tag=On ; Позволяет использовать тэги <% %> а-ля ASP. asp_tags=Off ; Число значащих цифр после запятой, которые отображаются для чисел с ; плавающей точкой. precision=14 ; Признак коррекции дат (проблема 2000 года, которая может ; вызвать непонимание со стороны браузеров, которые ; на это не рассчитывают) y2k_compliance=Off ; Использование буферизации вывода. Позволяет посылать заголовки (включая ; Cookies) после вывода текста. Правда, это происходит ценой ; незначительного замедления вывода. ; Вы можете разрешить буферизацию во время выполнения сценария путем ; вызова функций буферизации, или же включить ее по умолчанию с помощью ; следующей директивы: output_buffering=Off ; Директива неявной отсылки говорит PHP о том, что выводимые данные нужно ; автоматически передавать браузеру после вывода каждого блока данных. ; Ее действие эквивалентно вызовам функции flush() после ; каждого использования print() или echo() и после каждого HTML-блока. ; Включение этой директивы серьезно замедляет работу, поэтому ее ; рекомендуется применять лишь в отладочных целях. implicit_flush=Off ; Параметр определяет, должен ли PHP использовать возможность всегда ; передавать аргументы функциям по ссылке при выполнении сценария. ; Этот метод устарел, и, скорее всего, он не будет ; поддерживаться в будущих версиях PHP/Zend. ; Описание того, каким способом должен быть передан аргумент — ; по ссылке или по значению — рекомендуется указывать при объявлении ; функции. Лучше всего, если вы попробуете установить параметр в Off ; и проверите, все ли сценарии по-прежнему работают. Если это так, ; то все в порядке, и сценарии будут совместимы и с будущими версиями ; PHP. В противном случае вы будете получать предупреждения каждый раз, ; когда аргументы передаются ненадлежащим образом и по значению там, ; где должны передаваться по ссылке. allow_call_time_pass_reference=On ; Безопасный режим safe_mode=Off safe_mode_exec_dir= ; Установка некоторых переменных окружения может потенциально породить ; "дыры" в защите сценариев. Следующая директива содержит разделенный ; запятыми список префиксов. В режиме включенного безопасного режима ; пользователь сможет изменять только те переменные окружения, имена ; которых начинаются с перечисленных префиксов. ; По умолчанию пользователь имеет возможность устанавливать только ; переменные окружения, начинающиеся с PHP_ (например, ; PHP_FOO=something). ; Замечание: если эта директива пуста, PHP позволяет пользователям ; модифицировать любые переменные окружения! safe_mode_allowed_env_vars=PHP_ ; Следующая директива содержит разделенный запятыми список имен ; переменных окружения, которые конечный пользователь не сможет изменять ; путем вызова putenv(). ; Эти переменные будут защищены даже в том случае, если директива ; разрешает их использовать. safe_mode_protected_env_vars=LD_LIBRARY_PATH ; Эта директива позволяет вам запрещать вызовы некоторых функций ; из соображений безопасности. Список задается в виде имен функций, ; разграниченных запятыми. Директива действует независимо от того, ; установлен ли безопасный режим или нет! disable_functions= ; Цвета для режима раскраски синтаксиса. Любой цвет, допустимый в тэге ; <font color=???>, допустим и здесь. highlight.string=#DD0000 highlight.comment=#FF8000 highlight.keyword=#007700 highlight.bg=#FFFFFF highlight.default=#0000BB highlight.html=#000000 ; Другие директивы ; Следующая директива указывает, должен ли PHP добавлять заголовок ; X-Powered-by в заголовки, посылаемые браузеру, и, таким образом, ; обнаруживать себя. Это никак не может повлиять на безопасность ; сценария, однако позволяет пользователю определить, использовался ; ли PHP для генерации страницы, или нет. expose_php=On ;;;;;;;;;;;;;;;;;;;;;;;; ; Ограничения ресурсов ; ;;;;;;;;;;;;;;;;;;;;;;;; ; Максимальное возможное время выполнения сценария в секундах. Если ; сценарий будет выполняться дольше, PHP принудительно завершит его. max_execution_time=30 ; Максимальный объем памяти, выделяемый сценарию (8MB) memory_limit=8M ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Обработка ошибок и подключений ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Директива error_reporting должна задаваться в виде битового ; поля. Его значение можно устанавливать с помощью следующих констант, ; объединенных оператором | (OR): ; E_ALL - Все предупреждения и ошибки. ; E_ERROR - Критические ошибки времени выполнения. ; E_WARNING - Предупреждения времени выполнения. ; E_PARSE - Ошибки трансляции. ; E_NOTICE - Замечания времени выполнения (это такие ; предупреждения, которые, скорее всего, ; свидетельствуют о логических ошибках в ; сценарии, — например, использовании ; неинициализированной переменной). ; E_CORE_ERROR - Критические ошибки в момент старта PHP. ; E_CORE_WARNING - Некритические предупреждения во время старта PHP. ; E_COMPILE_ERROR - Критические ошибки времени трансляции. ; E_COMPILE_WARNING - Предупреждения времени трансляции. ; E_USER_ERROR - Сгенерированные пользователем ошибки. ; E_USER_WARNING - Сгенерированные пользователем предупреждения. ; E_USER_NOTICE - Сгенерированные пользователем замечания. ; Пример: ; показывать все ошибки, за исключением замечаний ; error_reporting = E_ALL & ~E_NOTICE ; показывать только сообщения об ошибках ; error_reporting=E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR ; отображать все ошибки, предупреждения и замечания error_reporting= E_ALL ; Печать ошибок и предупреждений прямо в браузер. ; Для готовых сайтов рекомендуется отключать следующую директиву и ; использовать вместо нее журнализацию (см. ниже). Включенная директива ; display_errors в "рабочих" сайтах может открыть доступ пользователю к ; секретной информации: например, полному пути к документу, используемой ; базе данных и т. д. display_errors=On ; Даже если display_errors включена, ошибки, возникающие во время старта ; PHP, не отображаются. Рекомендуется устанавливать следующую директиву ; в выключенное состояние, за исключением случая, когда вы применяете ; ее при отладке. display_startup_errors=On ; Сохранять ли сообщения об ошибках в файле журнала. Журнал может ; определяться настройками сервера, быть связанным с потоком stderr ; или же задаваться директивой error_log, описанной ниже. Как уже было ; сказано, в коммерческих проектах желательно использовать именно ; журнализацию, а не отображать ошибки в браузер. log_errors=Off ; Сохранять ли последнее сообщение об ошибке или предупреждение в ; переменной $php_errormsg track_errors=On ; Строка, которая выводится перед сообщением об ошибке. ;error_prepend_string="<font color=ff0000>" ; Строка, которая отображается после сообщения. ;error_append_string="</font>" ; Раскомментируйте, чтобы вести журнал в указанном файле. ;error_log=filename; ; Раскройте, чтобы использовать системный журнал. ;error_log=syslog ; Предупреждать, когда оператор + применяется к строкам. warn_plus_overloading=Off ;;;;;;;;;;;;;;;;;;;; ; Обработка данных ; ;;;;;;;;;;;;;;;;;;;; ; Замечание: track_vars всегда включена, начиная с PHP 4.0.3. ; Следующая директива определяет, в каком порядке PHP будет ; регистрировать данные, полученные методами GET, POST, а также ; переменные окружения и встроенные переменные (соответственно, значение ; задается буквами G, P, C, E и S, например, EGPCS или GPC). Регистрация ; производится на основе чтения этой строки слева направо, новые значения ; переопределяют старые. variables_order="EGPCS" ; Должен ли PHP регистрировать EGPCS-переменные как глобальные ; переменные. Возможно, вы захотите отключить эту возможность, если не ; хотите "засорять" глобальную область видимости сценария. Это имеет ; смысл, если вы используете директиву track_vars — в этом случае вы ; можете получить доступ к GPC-данным через массив $HTTP_???_VARS. ; Желательно так писать сценарии, чтобы они по возможности ; старались обходиться без директивы register_globals. Использование ; данных, поступивших из формы, как глобальных переменных, потенциально ; может породить проблемы в защите сценария, если программист не особенно ; позаботится об их устранении. register_globals=On ; Следующая директива указывает PHP, обязан ли он создавать переменные ; $argv и $argc на основе информации, поступившей методом GET. Если вы не ; используете эти переменные, отключите директиву register_argc_argv для ; небольшого убыстрения работы PHP. register_argc_argv=On ; Максимальный размер данных POST, который PHP сможет принять. post_max_size=8M ; Следующая директива устарела — используйте variables_order. gpc_order="GPC" ; Автоматическая обработка кавычек и апострофов: ; использовать ли автокавычки для входящих GET/POST/Cookie данных magic_quotes_gpc=Off ; заключать ли данные в автокавычки во время выполнения, например, ; для данных из SQL, exec() и т. д. magic_quotes_runtime=Off ; Нужно ли PHP оформлять автокавычки в стиле Sybase-style (заменять ' ; на '', а не на \') magic_quotes_sybase=Off ; Следующие директивы указывают PHP, содержимое каких файлов он должен ; обрабатывать до и после вывода сценария. auto_prepend_file= auto_append_file= ; Начиная с версии 4.0b4, PHP всегда сообщает браузеру об используемой ; кодировке в заголовке Content-type. Для того чтобы запретить это, ; просто установите следующую директиву пустой. По умолчанию ; используется text/html без указания кодировки. default_mimetype="text/html" ;default_charset="iso-8859-1" ;;;;;;;;;;;;;;;;;;; ; Пути и каталоги ; ;;;;;;;;;;;;;;;;;;; ; Для UNIX: "/path1:/path2". ; Для Windows: "\path1;\path2" include_path= ; Корневой каталог для PHP-сценариев. ; Игнорируется, если значение равно пустому "". doc_root= ; Каталог, который PHP использует при открытии сценария вида ; /~username. Не оказывает действия, если значение равно "". user_dir= ; Каталог, в котором хранятся динамически загружаемые расширения. extension_dir=C:/Program Files/PHP4/extensions ; Следующая директива разрешает или запрещает использование функции dl(). ; Функция dl() работает неправильно в многопоточных Web-серверах, ; например, в IIS или Zeus, и автоматически отключается для них. enable_dl=On ;;;;;;;;;;;;;;;;;; ; Закачка файлов ; ;;;;;;;;;;;;;;;;;; ; Разрешает PHP обрабатывать закачку файлов file_uploads=On ; Каталог для временных файлов, в который PHP помещает закачанные ; файлы (используется системный временный каталог, если в директиве ; указана пустая строка) ;upload_tmp_dir= ; Максимальный размер закачанного файла upload_max_filesize=2M ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Динамически загружаемые расширения ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Если вы хотите, чтобы какие-то модули загружались автоматически, ; задавайте директиву extension в формате: ; extension=modulename.extension ; Например, для Windows: ; extension=msql.dll ; или для UNIX: ; extension=msql.so ; Должно быть указано только имя, без пути. Чтобы задать ; каталог, в котором расположены расширения, используйте директиву ; extension_dir, описанную выше. ; Модули для Windows ; Замечание: поддержка MySQL и ODBC теперь включена в ядро PHP, так что ; для нее уже не нужны никакие библиотеки DLL. ;extension=php_cpdf.dll ;extension=php_cybercash.dll ;extension=php_db.dll ;extension=php_dbase.dll ;extension=php_domxml.dll ;extension=php_dotnet.dll ;extension=php_exif.dll ;extension=php_fdf.dll ;extension=php_gd.dll ;extension=php_gettext.dll ;extension=php_ifx.dll ;extension=php_imap.dll ;extension=php_interbase.dll ;extension=php_java.dll ;extension=php_ldap.dll ;extension=php_mhash.dll ;extension=php_mssql65.dll ;extension=php_mssql70.dll ;extension=php_oci8.dll ;extension=php_oracle.dll ;extension=php_pdf.dll ;extension=php_pgsql.dll ;extension=php_sablot.dll ;extension=php_swf.dll ;extension=php_sybase_ct.dll ;extension=php_zlib.dll ;;;;;;;;;;;;;;;;;;;;;;;;; ; Установки для модулей ; ;;;;;;;;;;;;;;;;;;;;;;;;; [Syslog] ; Нужно или нет определять различные переменные Syslog, такие как ; $LOG_PID, $LOG_CRON и т. д. Для ускорения работы рекомендуется ; выключать следующую директиву. Во время выполнения сценария вы ; можете включить или выключить директиву путем вызова ; функции define_syslog_variables(). define_syslog_variables=Off [mail function] ; Только для Win32 — используемый SMTP-сервер. SMTP=mail.mail.zz ; Только для Win32 — поле From: по умолчанию. sendmail_from= info@mail.zz ; Только для UNIX — задает путь и аргументы программы sendmail (по ; умолчанию — 'sendmail -t -i'). ;sendmail_path= [Debugger] ;debugger.host=localhost ;debugger.port=7869 ;debugger.enabled=False [Logging] ; Следующие директивы используются сценарием-примером. ; При потребности в детальном описании см. examples/README.logging. ;logging.method=db ;logging.directory=/path/to/log/directory [Java] ;java.class.path=.\php_java.jar ;java.home=c:\jdk ;java.library=c:\jdk\jre\bin\hotspot\jvm.dll ;java.library.path=.\ [SQL] sql.safe_mode=Off [ODBC] ;uodbc.default_db=Not yet implemented ;uodbc.default_user=Not yet implemented ;uodbc.default_pw=Not yet implemented ; Разрешает или запрещает устойчивые соединения uodbc.allow_persistent=On ; Проверка доступности соединения перед его использованием. uodbc.check_persistent=On ; Макс. число устойчивых соединений. -1 означает, что ограничений нет. uodbc.max_persistent=-1 ; Макс. число соединений (устойчивых + неустойчивых). uodbc.max_links=-1 ; Установки для LONG-полей. uodbc.defaultlrl=4096 ; Установки для бинарных данных. 0 означает режим passthru, 1 – режим ; as is, 2 – преобразование в символы. uodbc.defaultbinmode=1 ; См. документацию по odbc_binmode и odbc_longreadlen для более ; детального разъяснения смысла директив uodbc.defaultlrl и ; uodbc.defaultbinmode. [MySQL] mysql.allow_persistent=On mysql.max_persistent=-1 mysql.max_links=-1 ; Порт по умолчанию для функции mysql_connect(). Если не задан, функция ; попытается использовать переменную $MYSQL_TCP_PORT или запись mysql-tcp ; в /etc/services, а также заданную во время компиляции PHP константу ; MYSQL_PORT (именно в таком порядке). К PHP для Win32 применимо только ; последнее. mysql.default_port= ; Определяет имя сокета для локальных соединений MySQL. Если он не задан, ; использует встроенное значение по умолчанию. mysql.default_socket= ; Хост по умолчанию для mysql_connect() (не работает в безопасном режиме). mysql.default_host= ; Пользователь по умолчанию (не работает в безопасном режиме). mysql.default_user= ; Пароль по умолчанию (не работает в безопасном режиме). ; Замечание: идея хранить пароль в этом файле просто отвратительна. Любой ; пользователь, который может запускать PHP, сможет узнать пароль путем ; выполнения: ; echo cfg_get_var("mysql.default_password") ; Конечно, узнать пароль сможет также и пользователь, который имеет права ; на чтение для файла php.ini. mysql.default_password= [mSQL] msql.allow_persistent=On msql.max_persistent=-1 msql.max_links=-1 [PostgresSQL] pgsql.allow_persistent=On pgsql.max_persistent=-1 pgsql.max_links=-1 [Sybase] sybase.allow_persistent=On sybase.max_persistent=-1 sybase.max_links=-1 ;sybase.interface_file="/usr/sybase/interfaces" ; Максимальный уровень серьезности отображаемых ошибок. sybase.min_error_severity=10 ; Минимальный уровень серьезности отображаемых ошибок. sybase.min_message_severity=10 ; Режим совместимости со старыми версиями PHP 3.0. ; Если следующая директива установлена в On, PHP будет автоматически ; присваивать тип результату на основе его типа в Sybase, вместо того, ; чтобы преобразовывать полученные значения в строки. Этот режим ; совместимости, возможно, в будущем не будет поддерживаться, так что ; лучше исправьте свои сценарии, если вам он нужен. sybase.compatability_mode=Off [Sybase-CT] sybct.allow_persistent=On sybct.max_persistent=-1 sybct.max_links=-1 sybct.min_server_severity=10 sybct.min_client_severity=10 [bcmath] ; Число десятичных цифр для всех bcmath-функций. bcmath.scale=0 [browscap] ; browscap=extra/browscap.ini [Informix] ifx.default_host= ifx.default_user= ifx.default_password= ifx.allow_persistent=On ifx.max_persistent=-1 ifx.max_links=-1 ; Если следующая директива установлена в On, выражение select возвращает ; содержимое поля типа text blob вместо его идентификатора. ifx.textasvarchar=0 ; Заставляет команду select возвращать значение поля типа byte blob ; вместо его идентификатора. ifx.byteasvarchar=0 ; Принуждает PHP удалять завершающие пробелы из колонок с типом char ; фиксированного размера. Может помочь пользователям Informix SE. ifx.charasvarchar=0 ; Если установлена, содержимое полей text и byte сохраняется в файле, ; вместо того, чтобы храниться в памяти. ifx.blobinfile=0 ; Если установлена в 0, значения NULL возвращаются как пустые строки, ; иначе они возвращаются как строки 'NULL'. ifx.nullformat=0 [Session] ; Определяет режим хранения данных сессий. session.save_handler=files ; Следующая директива задает аргумент, передаваемый save_handler-у. ; В случае режима сохранения в файлах здесь должен указываться каталог, ; в который будут помещены файлы сессий. session.save_path=C:\Program Files\PHP4\sessiondata ; Должен ли PHP использовать Cookies. session.use_cookies=1 session.name=PHPSESSID ; Инициализировать ли сессии при старте. session.auto_start=0 ; Время жизни Cookie для сессии. Если до закрытия браузера, то 0. session.cookie_lifetime=0 ; Путь для Cookie с идентификатором сессии. session.cookie_path=/ ; Домен для Cookie с идентификатором сессии. session.cookie_domain= ; Функция, используемая для сериализации данных. Значение php задает ; стандартную функцию. session.serialize_handler=php ; Вероятность того, что при очередном запуске сценария, работающего с ; сессиями, будет вызвана функция "сборки мусора" для очистки сессий, ; которые пользователь уже покинул. session.gc_probability=1 ; После указанного здесь промежутка времени сохраненные ; данные будут удалены автоматически сборщиком мусора. session.gc_maxlifetime=1440 ; Проверять ли HTTP Referer на предмет того, не является ли ID сессии ; "фальшивым". session.referer_check= ; Указывает, сколько байтов читать из файла. session.entropy_length=0 ;session.entropy_length=16 ; Файл, используемый для генерации идентификаторов сессии. session.entropy_file= ;session.entropy_file=/dev/urandom ; Установите одно из значений nocache, private, public для определения ; аспектов кэширования HTTP. session.cache_limiter=nocache ; Документ будет считаться устаревшим по истечении заданного ; здесь количества минут session.cache_expire=180 ; Использовать ли поддержку "переходящих" SID. Действует, если PHP был ; скомпилирован с включенной опцией --enable-trans-sid. session.use_trans_sid=1 [MSSQL] ;extension=php_mssql.dll mssql.allow_persistent=On mssql.max_persistent=-1 mssql.max_links=-1 mssql.min_error_severity=10 mssql.min_message_severity=10 ; Режим совместимости со старыми версиями PHP 3.0. mssql.compatability_mode=Off [Assertion] ;assert.active=On ; Генерирует предупреждения PHP для каждых неудавшихся проверок ; выражений. ;assert.warning=On ; По умолчанию не завершать программу в случае неудачи. ;assert.bail=Off ; Пользовательская функция, которая будет вызвана при неудаче проверки. ;assert.callback=0 ; Вычислять выражения в eval с использованием текущих установок ; error_reporting. Установите в true, если вы хотите, чтобы действие ; режима error_reporting(0) было сохранено и при переходе через ; границу eval(). ;assert.quiet_eval=0 [Ingres II] ingres.allow_persistent=On ingres.max_persistent=-1 ingres.max_links=-1 ; База данных по умолчанию (формат: [node_id::]dbname[/srv_class] ingres.default_database= ingres.default_user= ingres.default_password= [Verisign Payflow Pro] pfpro.defaulthost="test.signio.com" pfpro.defaultport=443 pfpro.defaulttimeout=30 ; IP-адрес proxy-сервера по умолчанию (если требуется). ; pfpro.proxyaddress= ; Порт proxy-сервера по умолчанию ; pfpro.proxyport= ; Логин для proxy-сервера по умолчанию ; pfpro.proxylogon= ; Пароль для proxy-сервера по умолчанию ; pfpro.proxypassword=