mirror of
https://github.com/php/doc-uk.git
synced 2026-03-23 22:52:14 +01:00
509 lines
24 KiB
XML
509 lines
24 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!-- EN-Revision: d5d10b38b4395e77827b04d5290bb137bd3872b4 Maintainer: mproshchuk Status: ready -->
|
||
<chapter xml:id="configuration" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||
<title>Конфігурація під час запуску</title>
|
||
|
||
<sect1 xml:id="configuration.file">
|
||
<title>Файл конфігурації</title>
|
||
|
||
<simpara>
|
||
Файл конфігурації (&php.ini;) читається під час запуску PHP. Для версії PHP,
|
||
яка запускається як модуль, це відбувається тільки під час старту веб-сервера.
|
||
Для випадку, коли PHP використовується як <acronym>CGI</acronym> або як
|
||
<acronym>CLI</acronym>, це відбувається під час кожного запуску.
|
||
</simpara>
|
||
<para>
|
||
&php.ini; шукається в наступних розташуваннях (за таким порядком):
|
||
<itemizedlist>
|
||
<listitem>
|
||
<simpara>
|
||
Спеціальне розташування модуля SAPI (визначається директивою
|
||
<literal>PHPIniDir</literal> в Apache 2, параметром <literal>-c</literal>
|
||
в командному рядку в CGI та CLI).
|
||
</simpara>
|
||
</listitem>
|
||
<listitem>
|
||
<simpara>
|
||
Змінна оточення <varname>PHPRC</varname>.
|
||
</simpara>
|
||
</listitem>
|
||
<listitem>
|
||
<simpara>
|
||
Розташування файлу <literal>php.ini</literal> можна визначати для кожної
|
||
версії PHP окремо. Корінь ключів регістру залежить від розрядності ОС та
|
||
PHP. Для 32-бітного PHP у 32-бітній ОС чи 64-бітного PHP у 64-бітній ОС
|
||
використовується <literal>[(HKEY_LOCAL_MACHINE\SOFTWARE\PHP]</literal>,
|
||
натомість для 32-бітних версій PHP у 64-бітній ОС використовується
|
||
<literal>[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PHP]</literal>].
|
||
Коли розрядність співпадає, ключі регістру обробляються в такому порядку:
|
||
<literal>[HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y.z]</literal>,
|
||
<literal>[HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y]</literal> та
|
||
<literal>[HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x]</literal>, де x, y та z
|
||
означають мажорні, мінорні та патч- випуски. Для 32-бітних версій PHP на
|
||
64-бітних ОС ключі регістру обробляються в такому порядку:
|
||
<literal>[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x.y.z]</literal>,
|
||
<literal>[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x.y]</literal> та
|
||
<literal>[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x]</literal>, де
|
||
x, y та z означають мажорні, мінорні та патч- випуски. Якщо значення для
|
||
<literal>IniFilePath</literal> знаходиться в будь-якому з цих ключів, воно
|
||
буде використовуватись як розташування файла
|
||
<literal>php.ini</literal> (тільки у Windows).
|
||
</simpara>
|
||
</listitem>
|
||
<listitem>
|
||
<simpara>
|
||
<literal>[HKEY_LOCAL_MACHINE\SOFTWARE\PHP]</literal> або
|
||
<literal>[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PHP]</literal>, значення
|
||
<literal>IniFilePath</literal> (тільки у Windows).
|
||
</simpara>
|
||
</listitem>
|
||
<listitem>
|
||
<simpara>
|
||
Поточна робоча тека (за виключенням CLI).
|
||
</simpara>
|
||
</listitem>
|
||
<listitem>
|
||
<simpara>
|
||
Тека вебсервера (для модуля SAPI), або тека PHP
|
||
(в іншому випадку - тека Windows).
|
||
</simpara>
|
||
</listitem>
|
||
<listitem>
|
||
<simpara>
|
||
Тека Windows (<filename class="directory">C:\windows</filename>
|
||
або <filename class="directory">C:\winnt</filename>) (для Windows), або
|
||
параметр <literal>--with-config-file-path</literal> під час компіляції.
|
||
</simpara>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</para>
|
||
<para>
|
||
Якщо <filename>php-SAPI.ini</filename> існує (де SAPI означає - SAPI, що
|
||
використовується, наприклад, <filename>php-cli.ini</filename> або
|
||
<filename>php-apache.ini</filename>), його буде використано замість &php.ini;.
|
||
Назву SAPI можна знайти використовуючи функцію <function>php_sapi_name</function>.
|
||
</para>
|
||
<note>
|
||
<para>
|
||
Веб-сервер Apache змінює теку на кореневу на старті, в результаті чого
|
||
PHP читає файл &php.ini; з кореневої теки, якщо він там існує.
|
||
</para>
|
||
</note>
|
||
<para>
|
||
Змінні оточення можна використовувати в &php.ini; як показано нижче.
|
||
</para>
|
||
<para>
|
||
<example>
|
||
<title>Використання Змінних Оточення в &php.ini;</title>
|
||
<programlisting role="ini">
|
||
<![CDATA[
|
||
; PHP_MEMORY_LIMIT бере значення із оточення
|
||
memory_limit = ${PHP_MEMORY_LIMIT}
|
||
]]>
|
||
</programlisting>
|
||
</example>
|
||
</para>
|
||
<para>
|
||
Директиви &php.ini;, що обробляються через розширення, мають опис на
|
||
відповідних сторінках розширень. <link linkend="ini">Список директив
|
||
ядра</link> знаходиться в додатку. Не всі PHP-директиви описані в цьому
|
||
посібнику: повний їх список можна знайти в коментарях файлу &php.ini; вашої
|
||
версії PHP. Окрім цього, можна прочитати
|
||
<link xlink:href="&url.php.git.phpini;">останню версію файлу &php.ini;</link>
|
||
зі сховища Git.
|
||
</para>
|
||
<para>
|
||
<example>
|
||
<title>Частина вмісту з файлу &php.ini;</title>
|
||
<programlisting role="ini">
|
||
<![CDATA[
|
||
; будь-який текст після символів крапки-з-комою (;) ігнорується
|
||
[php] ; маркери розділів (текст вередині квадратних дужок) також ігнорується
|
||
; Логічні значення можуть встановлюватись такими записами:
|
||
; true, on, yes
|
||
; або false, off, no, none
|
||
register_globals = off
|
||
track_errors = yes
|
||
|
||
; рядок можна взяти в подвійні дужки
|
||
include_path = ".:/usr/local/lib/php"
|
||
|
||
; зворотні слеші сприймаються точно так як і інші символи
|
||
include_path = ".;c:\php\lib"
|
||
]]>
|
||
</programlisting>
|
||
<!-- TODO: add more details about values and expressions -->
|
||
</example>
|
||
</para>
|
||
<para>
|
||
Дозволено посилатись на наявні змінні .ini з середини файлу .ini. Наприклад:
|
||
<literal>open_basedir = ${open_basedir}
|
||
":/new/dir"</literal>.
|
||
</para>
|
||
<sect2 xml:id="configuration.file.scan">
|
||
<title>Пошук файлів .ini в теках</title>
|
||
|
||
<para>
|
||
Дозволено налаштувати PHP для пошуку файлів .ini в теці вже після обробки
|
||
&php.ini;. Для цього, під час компіляції, вказується опція
|
||
<option role="configure">--with-config-file-scan-dir</option>. Цільову теку
|
||
можна перепризначити у ході виконання коду, задавши потрібне значення
|
||
змінній середовища <varname>PHP_INI_SCAN_DIR</varname>.
|
||
</para>
|
||
|
||
<para>
|
||
Для пошуку в різних теках треба відокремити їх роздільником шляхів
|
||
(<literal>;</literal> у Windows, NetWare та RISC OS; <literal>:</literal>
|
||
на всіх інших платформах; значення, що використовує PHP, доступне як
|
||
константа <constant>PATH_SEPARATOR</constant>). Якщо в
|
||
<varname>PHP_INI_SCAN_DIR</varname> вказано порожню теку, PHP виконає пошук
|
||
в теці, заданій під час компіляції опцією
|
||
<option role="configure">--with-config-file-scan-dir</option>.
|
||
</para>
|
||
|
||
<para>
|
||
В кожній теці PHP буде вибирати всі файли з закінченням
|
||
<literal>.ini</literal> у алфавітному порядку. Список оброблених файлів та
|
||
їхній порядок повертає <function>php_ini_scanned_files</function>, або PHP,
|
||
запущений з опцією <option>--ini</option>.
|
||
</para>
|
||
|
||
<informalexample>
|
||
<screen>
|
||
<![CDATA[
|
||
Припускається, що PHP налаштовано з --with-config-file-scan-dir=/etc/php.d,
|
||
а роздільник — :...
|
||
|
||
$ php
|
||
PHP обробить всі файли /etc/php.d/*.ini як файли конфігурації.
|
||
|
||
$ PHP_INI_SCAN_DIR=/usr/local/etc/php.d php
|
||
PHP обробить всі файли /usr/local/etc/php.d/*.ini як файли конфігурації.
|
||
|
||
$ PHP_INI_SCAN_DIR=:/usr/local/etc/php.d php
|
||
PHP обробить всі файли /etc/php.d/*.ini, потім
|
||
/usr/local/etc/php.d/*.ini як файли конфігурації.
|
||
|
||
$ PHP_INI_SCAN_DIR=/usr/local/etc/php.d: php
|
||
PHP обробить всі файли /usr/local/etc/php.d/*.ini, потім
|
||
/etc/php.d/*.ini як файли конфігурації.
|
||
]]>
|
||
</screen>
|
||
</informalexample>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 xml:id="configuration.file.per-user">
|
||
<title>.user.ini (додаткові конфіг-файли)</title>
|
||
|
||
<simpara>
|
||
PHP підтримує налаштування роботи файлів INI для різних тек окремо. Ці файли
|
||
обробляються <emphasis>виключно</emphasis> через CGI/FastCGI SAPI. Ця
|
||
функціональність замінює застаріле розширення PECL htscanner. Якщо PHP
|
||
запускається, як модуль Apache, потрібно використовувати файли &htaccess; для
|
||
досягнення такого ж ефекту.
|
||
</simpara>
|
||
|
||
<simpara>
|
||
На додаток до головного файлу &php.ini;, PHP шукає INI-файли в кожній
|
||
теці, стартуючи з теки запрошеного PHP-файлу, та продовжує пошук
|
||
проходячи до поточної кореневої папки (назва якої міститься в змінній
|
||
<varname>$_SERVER['DOCUMENT_ROOT']</varname>). У випадку коли PHP-файл
|
||
знаходиться за межами кореневої теки, сканується лише його тека.
|
||
</simpara>
|
||
<simpara>
|
||
Стиль конфігурування через файли .user.ini матиме ефект тільки в режимі
|
||
<constant>INI_PERDIR</constant> та <constant>INI_USER</constant>.
|
||
</simpara>
|
||
|
||
<simpara>
|
||
Дві нові INI-директиви —
|
||
<link linkend="ini.user-ini.filename">user_ini.filename</link> and
|
||
<link linkend="ini.user-ini.cache-ttl">user_ini.cache_ttl</link>
|
||
контролюють використання користувальницьких INI-файлів.
|
||
</simpara>
|
||
|
||
<simpara>
|
||
Директива <link linkend="ini.user-ini.filename">user_ini.filename</link>
|
||
встановлює назву файлу, яку PHP шукає в кожній теці; якщо встановлено пустий
|
||
рядок, то PHP не сканує нічого. Початково назва цього файлу —
|
||
<literal>.user.ini</literal>.
|
||
</simpara>
|
||
|
||
<simpara>
|
||
Через директиву
|
||
<link linkend="ini.user-ini.cache-ttl">user_ini.cache_ttl</link>
|
||
контролюється частота перечитування INI-файлу. Початково встановлено 300
|
||
секунд (5 хвилин).
|
||
</simpara>
|
||
</sect1>
|
||
|
||
<sect1 xml:id="configuration.changes.modes">
|
||
<title>Де можна встановлювати параметри конфігурації</title>
|
||
|
||
<para>
|
||
Наведені нижче режими визначають де і коли PHP-директиви можуть або ж не можуть
|
||
встановлюватись, причому кожна директива в посібнику має відношення до одного з
|
||
цих режимів. Наприклад, деякі налаштування можуть встановлюватись всередині
|
||
PHP-скриптів використовуючи <function>ini_set</function>, в той час як інші
|
||
необхідно встановлювати в &php.ini; чи &httpd.conf;.
|
||
</para>
|
||
|
||
<para>
|
||
Наприклад, директива
|
||
<link linkend="ini.output-buffering">output_buffering</link> відноситься до
|
||
режиму <literal>INI_PERDIR</literal>, тому вона не може встановлюватись через
|
||
<function>ini_set</function>. Однак, директива
|
||
<link linkend="ini.display-errors">display_errors</link> відноситься до режиму
|
||
<literal>INI_ALL</literal>, тому вона може встановлюватись будь-де,
|
||
включаючи <function>ini_set</function>.
|
||
</para>
|
||
|
||
<para>
|
||
<variablelist>
|
||
<!--
|
||
Replace everything inside the <variablelist> element with an <xi:include>
|
||
once libxml2 gets XInclude 1.1 attribute copying support.
|
||
The below <xi:include> will include the appropriate elements
|
||
but needs all top-level xml:id's removed (see XInclude 1.1 set-xml-id).
|
||
|
||
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('constant.ini-mode')/*)"><xi:fallback/></xi:include>
|
||
-->
|
||
<title>Константи режимів INI</title>
|
||
<varlistentry>
|
||
<term>
|
||
<constant>INI_USER</constant>
|
||
(<type>int</type>)
|
||
</term>
|
||
<listitem>
|
||
<simpara>
|
||
Значення можна встановити в користувацьких скриптах (як і
|
||
<function xmlns="http://docbook.org/ns/docbook">ini_set</function>),
|
||
в <link xmlns="http://docbook.org/ns/docbook"
|
||
linkend="configuration.changes.windows">реєстрах Windows</link>, а також
|
||
в &user-ini;
|
||
</simpara>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term>
|
||
<constant>INI_PERDIR</constant>
|
||
(<type>int</type>)
|
||
</term>
|
||
<listitem>
|
||
<simpara>
|
||
Значення можна встановити в &php.ini;, &htaccess;, &httpd.conf; або &user-ini;
|
||
</simpara>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term>
|
||
<constant>INI_SYSTEM</constant>
|
||
(<type>int</type>)
|
||
</term>
|
||
<listitem>
|
||
<simpara>
|
||
Значення можна встановити в &php.ini; або &httpd.conf;
|
||
</simpara>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term>
|
||
<constant>INI_ALL</constant>
|
||
(<type>int</type>)
|
||
</term>
|
||
<listitem>
|
||
<simpara>
|
||
Значення можна встановити будь-де.
|
||
</simpara>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</para>
|
||
</sect1>
|
||
|
||
<sect1 xml:id="configuration.changes">
|
||
<title>Як змінити параметри конфігурації</title>
|
||
|
||
<sect2 xml:id="configuration.changes.apache">
|
||
<title>Запуск PHP як модуля Apache</title>
|
||
<simpara>
|
||
Коли використовується PHP як модуль Apache, можна також змінити параметри
|
||
конфігурації, використовуючи директиви файлів конфігурації Apache (напр.
|
||
&httpd.conf; та &htaccess;). Також потрібні "AllowOverride Options" або
|
||
"AllowOverride All" привілеї, щоб зробити це.
|
||
</simpara>
|
||
|
||
<para>
|
||
Існує кілька директив Apache, які дозволяють змінити PHP-конфігурацію через
|
||
конфігураційні файли Apache. Зіставлення між цими директивами та типами
|
||
<constant>INI_ALL</constant>, <constant>INI_PERDIR</constant>, або
|
||
<constant>INI_SYSTEM</constant> наведено у
|
||
<link linkend="ini.list">Список директив php.ini</link>.
|
||
</para>
|
||
|
||
<para>
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term>
|
||
<systemitem role="directive">php_value</systemitem>
|
||
<parameter>name</parameter>
|
||
<parameter>value</parameter>
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
Встановлює значення вказаної директиви.
|
||
Може використовуватись тільки з типами директив
|
||
<constant>INI_ALL</constant> та <constant>INI_PERDIR</constant>.
|
||
Щоб очистити попереднє значення, використовуйте <literal>none</literal>
|
||
як значення.
|
||
</para>
|
||
<note>
|
||
<simpara>
|
||
Не використовуйте <systemitem role="directive">php_value</systemitem>
|
||
для встановлення логічного (boolean) значення. Замість цього використовуйте
|
||
<systemitem role="directive">php_flag</systemitem> (див. нижче).
|
||
</simpara>
|
||
</note>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term>
|
||
<systemitem role="directive">php_flag</systemitem>
|
||
<parameter>name</parameter>
|
||
<parameter>on|off</parameter>
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
Використовується для встановлення логічного значення для директив.
|
||
Може використовуватись тільки з типами директив
|
||
<constant>INI_ALL</constant> та <constant>INI_PERDIR</constant>.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term>
|
||
<systemitem role="directive">php_admin_value</systemitem>
|
||
<parameter>name</parameter>
|
||
<parameter>value</parameter>
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
Встановлює значення вказаної директиви. Її <emphasis>не можна
|
||
використовувати</emphasis> в файлах &htaccess;. Будь-який тип директив
|
||
встановлений з <systemitem role="directive">php_admin_value</systemitem>
|
||
не може бути перезаписаний через &htaccess; або <function>ini_set</function>.
|
||
Щоб очистити попереднє значення, використовуйте <literal>none</literal>
|
||
як значення.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term>
|
||
<systemitem role="directive">php_admin_flag</systemitem>
|
||
<parameter>name</parameter>
|
||
<parameter>on|off</parameter>
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
Використовується для встановлення логічного значення для директив.
|
||
Її <emphasis>не можна використовувати</emphasis> в файлах &htaccess;.
|
||
Будь-який тип директив встановлений з
|
||
<systemitem role="directive">php_admin_flag</systemitem>
|
||
не може бути перезаписаний через &htaccess; або <function>ini_set</function>.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</para>
|
||
<para>
|
||
<example>
|
||
<title>Конфігурація Apache</title>
|
||
<programlisting role="ini">
|
||
<![CDATA[
|
||
<IfModule mod_php5.c>
|
||
php_value include_path ".:/usr/local/lib/php"
|
||
php_admin_flag engine on
|
||
</IfModule>
|
||
<IfModule mod_php4.c>
|
||
php_value include_path ".:/usr/local/lib/php"
|
||
php_admin_flag engine on
|
||
</IfModule>
|
||
]]>
|
||
</programlisting>
|
||
</example>
|
||
</para>
|
||
<caution>
|
||
<para>
|
||
PHP константи не можуть існувати за межами PHP. Наприклад, в &httpd.conf;
|
||
ви не можете використовувати PHP-константи такі як <constant>E_ALL</constant>
|
||
чи <constant>E_NOTICE</constant> для встановлення директиви
|
||
<link linkend="ini.error-reporting">error_reporting</link>, оскільки вони
|
||
не матимуть сенсу та будуть прирівнюватись до <emphasis>0</emphasis>.
|
||
Використовуйте замість цього відповідні значення bitmask (бітової маски).
|
||
Ці константи можна використовувати в &php.ini;
|
||
</para>
|
||
</caution>
|
||
</sect2>
|
||
|
||
<sect2 xml:id="configuration.changes.windows">
|
||
<title>Зміна PHP-конфігурації через Windows-реєстри</title>
|
||
<simpara>
|
||
Коли PHP запущено у Windows, значення конфігурації можна змінювати на рівні
|
||
теки за допомогою реєстрів Windows. Значення конфігурації зберігаються
|
||
в ключі реєстра <literal>HKLM\SOFTWARE\PHP\Per Directory Values</literal>,
|
||
в суб-ключах відповідних до шляху назви. Наприклад, значення конфігурації
|
||
для теки <literal>c:\inetpub\wwwroot</literal> буде зберігатись в ключі
|
||
<literal>HKLM\SOFTWARE\PHP\Per Directory Values\c\inetpub\wwwroot</literal>.
|
||
Налаштування для теки будуть активними для будь-якого скрипта, що
|
||
запущено з цієї теки або її підтеки. Значення ключа повинно мати
|
||
назву директиви PHP-конфігурації та мати рядковий тип (string). Константи PHP
|
||
в середині ключів реєстра не парсяться. Хоча, тільки значення конфігурації,
|
||
що змінюються в <constant>INI_USER</constant>, можуть бути встановленими
|
||
таким чином, тоді як значення для <constant>INI_PERDIR</constant> - не
|
||
можуть, бо ці значення перечитуються для кожного запиту.
|
||
</simpara>
|
||
</sect2>
|
||
|
||
<sect2 xml:id="configuration.changes.other">
|
||
<title>Інші інтерфейси для PHP</title>
|
||
<para>
|
||
Не зважаючи на те як запущено PHP, ви можете змінити конкретне значення
|
||
директиви під час виконання вашого скрипта через функцію
|
||
<function>ini_set</function>. Докладнішу інформацію можна прочитати на
|
||
сторінці <function>ini_set</function>.
|
||
</para>
|
||
<para>
|
||
Якщо ви хочете побачити повний список та значення параметрів конфігурації у
|
||
вашій системі, можна ознайомитись з виводом функції
|
||
<function>phpinfo</function>. Також можна отримати значення конкретної
|
||
директиви під час виконання за допомогою функції
|
||
<function>ini_get</function> або
|
||
<function>get_cfg_var</function>.
|
||
</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
</chapter>
|
||
|
||
<!-- Keep this comment at the end of the file
|
||
Local variables:
|
||
mode: sgml
|
||
sgml-omittag:t
|
||
sgml-shorttag:t
|
||
sgml-minimize-attributes:nil
|
||
sgml-always-quote-attributes:t
|
||
sgml-indent-step:1
|
||
sgml-indent-data:t
|
||
indent-tabs-mode:nil
|
||
sgml-parent-document:nil
|
||
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
||
sgml-exposed-tags:nil
|
||
sgml-local-catalogs:nil
|
||
sgml-local-ecat-files:nil
|
||
End:
|
||
vim600: syn=xml fen fdm=syntax fdl=2 si
|
||
vim: et tw=78 syn=sgml
|
||
vi: ts=1 sw=1
|
||
-->
|