Если вы установили 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=