1
0
mirror of https://github.com/php/doc-uk.git synced 2026-03-23 22:52:14 +01:00
Files
archived-doc-uk/install/ini.xml
2024-09-04 19:33:54 +03:00

509 lines
24 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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
-->