mirror of
https://github.com/php/doc-uk.git
synced 2026-03-23 22:52:14 +01:00
544 lines
26 KiB
XML
544 lines
26 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!-- EN-Revision: 8e732e84a1425cf0ab3a5b0da8fe113c7a6da85e Maintainer: mproshchuk Status: ready -->
|
||
|
||
<chapter xml:id="faq.installation" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||
<title>Встановлення</title>
|
||
<titleabbrev>Встановлення</titleabbrev>
|
||
|
||
<para>
|
||
Цей розділ містить загальні питання по встановленню PHP. PHP доступна майже
|
||
для будь-яких операційних систем та для більшості вебсерверів.
|
||
</para>
|
||
<para>
|
||
Щоб встановити PHP, пройдіть кроки описані в розділі <xref linkend="install"/>.
|
||
</para>
|
||
|
||
<qandaset>
|
||
<qandaentry xml:id="faq.installation.apache2">
|
||
<question>
|
||
<para>
|
||
Чому я не повинен використовувати Apache2 з потоковим MPM на робочих серверах?
|
||
</para>
|
||
</question>
|
||
<answer>
|
||
<para>
|
||
PHP виконує функції своєрідного клея. Цей клей використовується щоб
|
||
створювати класні вебзастосунки, з'єднуючи дюжину сторонніх бібліотек разом
|
||
та створюючи враження єдиного злагодженого цілого, при використанні
|
||
інтуїтивно-зрозумілого та легкого для навчання інтерфейсу мови. Гнучкість
|
||
та потужність PHP спирається на стабільність та надійність базової
|
||
платформи. Потрібно щоб працювала ОС, працював вебсервер, та працювали
|
||
сторонні бібліотеки з'єднані разом. Якщо будь-хто з них зупинеться, то для
|
||
PHP потрібен спосіб для виявлення цієї проблеми та швидкого виправлення.
|
||
Коли ви робите звичайні умови розробки більш складними, при цьому не
|
||
маючи повністю розділених виконавчих потоків, повністю розділених сегментів
|
||
пам'яті, та міцьного майданчику для експерементальних розробок, то це
|
||
означає, що у вашої PHP-системі з'являються слабкі місця.
|
||
</para>
|
||
<para>
|
||
Якщо ви хочете використовувати потоковий MPM, спробуйте сконфігурувати
|
||
FastCGI, під яким можна виділяти окремий простір пам'яті для PHP.
|
||
</para>
|
||
</answer>
|
||
</qandaentry>
|
||
|
||
<qandaentry xml:id="faq.installation.phpini">
|
||
<question>
|
||
<para>
|
||
Unix/Windows: Де повинен знаходитись файл &php.ini;?
|
||
</para>
|
||
</question>
|
||
<answer>
|
||
<para>
|
||
Початково в Unix-системах він повинен бути в
|
||
<filename>/usr/local/lib</filename>, що визначається як
|
||
<filename><шлях-встановлення>/lib</filename>.
|
||
Більшість користувачів змінює його під час компіляції через флаг
|
||
<link linkend="configure.with-config-file-path">--with-config-file-path</link>.
|
||
Тобто, наприклад, це можна зробити так:
|
||
<programlisting role="shell">
|
||
--with-config-file-path=/etc
|
||
</programlisting>
|
||
Після чого потрібно скопіювати вміст файла <filename>php.ini-development</filename>
|
||
з дистрибутива до <filename>/etc/php.ini</filename> та змінити його
|
||
під себе.
|
||
</para>
|
||
<programlisting role="shell">
|
||
--with-config-file-scan-dir=PATH
|
||
</programlisting>
|
||
<para>
|
||
У Windows початково, шлях для &php.ini;, веде до директорії Windows.
|
||
Якщо ви використовуєте вебсервер Apache, файл &php.ini;
|
||
спочатку шукається в директорії, де встановлено Apache, наприклад в
|
||
<filename>c:\program files\apache group\apache</filename>. В такому разі,
|
||
ви можете мати кілька різних файлів &php.ini; для різних версій Apache
|
||
на одній і тій самій машині.
|
||
</para>
|
||
<para>
|
||
Прочитайте також інформацію про <link
|
||
linkend="configuration.file">Файл конфігурації</link>.
|
||
</para>
|
||
</answer>
|
||
</qandaentry>
|
||
|
||
<qandaentry xml:id="faq.installation.nodata">
|
||
<question>
|
||
<para>
|
||
Unix: Я встановив PHP, але кожен раз завантажуючи документ, я отримую
|
||
повідомлення 'Document Contains No Data'! (Документ не містить даних)
|
||
Чому так відбувається?
|
||
</para>
|
||
</question>
|
||
<answer>
|
||
<para>
|
||
Це ймовірно означає, що в PHP виникли деякі проблеми, та її ядро впало.
|
||
Продивіться журнали помилок сервера, та спробуйте відтворити
|
||
проблему створивши невеличкий тест. Якщо ви знаєте як використовувати 'gdb',
|
||
це може бути дуже корисним, бо ви можете надати зворотній слід (backtrace)
|
||
разом з вашим звітом про неполадку, щоб допомогти розробникам точно
|
||
визначити проблему. Якщо ви використовуєте PHP як модуль Apache, спробуйте
|
||
щось схоже на це:
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>
|
||
Зупиніть процес httpd, та виконайте наступну команду:
|
||
</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>
|
||
gdb httpd
|
||
</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>
|
||
Зупиніть процес httpd, та виконайте наступну команду:
|
||
</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>
|
||
> run -X -f /шлях/до/httpd.conf
|
||
</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>
|
||
Потім через браузер викличте URL, що викликає вашу проблему, та
|
||
виконайте наступну команду:
|
||
</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>
|
||
> run -X -f /шлях/до/httpd.conf
|
||
</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>
|
||
Якщо ядро впаде, gdb повинен проінформувати вас про це
|
||
</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>
|
||
виконайте команду: bt
|
||
</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>
|
||
Вам потрібно включити отриманий зворотній слід (backtrace) у звіт про
|
||
неполадку на сайті
|
||
<link xlink:href="&url.php.bugs;">&url.php.bugs;</link>
|
||
</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</para>
|
||
<para>
|
||
Якщо ваш скрипт використовує функцію регулярного виразу
|
||
(<function>preg_match</function> та подібні), потрібно переконатись, що
|
||
ви зібрали PHP та Apache з одним і тим же пакетом регулярних виразів.
|
||
Це повинно відбуватись автоматично з PHP та Apache 1.3.x
|
||
</para>
|
||
</answer>
|
||
</qandaentry>
|
||
|
||
<qandaentry xml:id="faq.installation.processing">
|
||
<question>
|
||
<para>
|
||
Unix: Я встановив PHP використовуючи RPMS, але Apache не обробляє сторінки
|
||
PHP! Чому так відбувається?
|
||
</para>
|
||
</question>
|
||
<answer>
|
||
<para>
|
||
Якщо припустити, що ви встановили Apache та PHP з пакетів RPM, то в такому
|
||
разі, вам потрібно розкоментувати або додати кілька або всі рядки у ваш
|
||
файл &httpd.conf;:
|
||
<programlisting role="apache-conf">
|
||
<![CDATA[
|
||
# Додаткові модулі
|
||
AddModule mod_php.c
|
||
AddModule mod_perl.c
|
||
|
||
# Додаткові модулі
|
||
LoadModule php_module modules/mod_php.so
|
||
LoadModule php5_module modules/libphp5.so
|
||
LoadModule perl_module modules/libperl.so
|
||
]]>
|
||
</programlisting>
|
||
Та додати:
|
||
<programlisting role="apache-conf">
|
||
<![CDATA[
|
||
AddType application/x-httpd-php .php
|
||
]]>
|
||
</programlisting>
|
||
... до глобальних властивостей, або до властивостей VirtualDomain,
|
||
куди ви хочете додати підтримку PHP.
|
||
</para>
|
||
</answer>
|
||
</qandaentry>
|
||
|
||
<qandaentry xml:id="faq.installation.frontpage">
|
||
<question>
|
||
<para>
|
||
Unix: Я залатав Apache за допомогою розширення FrontPage, але раптово
|
||
PHP перестав працювати. Виходить, що PHP з розширенням FrontPage для
|
||
Apache несумісні?
|
||
</para>
|
||
</question>
|
||
<answer>
|
||
<para>
|
||
Ні, PHP добре працює з розширенням FrontPage. Проблема в тому, що латка
|
||
FrontPage змінює деякі структури Apache, на які PHP покладається.
|
||
Перекомпіляція PHP (використовуючи 'make clean ; make')
|
||
після встановлення латки FrontPage, повинна вирішити цю проблему.
|
||
</para>
|
||
</answer>
|
||
</qandaentry>
|
||
|
||
<qandaentry xml:id="faq.installation.blankscreen">
|
||
<question>
|
||
<para>
|
||
Unix/Windows: Я встановив PHP, але коли намагаюсь викликати PHP-скрипти
|
||
через браузер, то отримую пустий екран.
|
||
</para>
|
||
</question>
|
||
<answer>
|
||
<para>
|
||
Прогляньте код (view source) у браузері, і ви мабуть побачите
|
||
початковий код PHP-скрипта. Це означає, що вебсервер не відправляє скрипт до
|
||
PHP-інтерпретатора. Тобто є якісь помилки в конфігурації вебсервера, то ж
|
||
двічі перевірте цю конфігурацію, дотримуючись інструкцій встановлення PHP.
|
||
</para>
|
||
</answer>
|
||
</qandaentry>
|
||
|
||
<qandaentry xml:id="faq.installation.500error">
|
||
<question>
|
||
<para>
|
||
Unix/Windows: Я встановив PHP, але коли намагаюсь викликати PHP-скрипт
|
||
через браузер, то отримую помилку сервера 500.
|
||
</para>
|
||
</question>
|
||
<answer>
|
||
<para>
|
||
Щось помилкове стається, коли вебсервер намагається запустити PHP. Щоб
|
||
побачити зрозумілі повідомлення помилок, з командного рядка, змініть
|
||
поточну директорію на ту, де знаходиться виконавчий файл PHP
|
||
(у Windows це <filename>php.exe</filename>) та запустіть
|
||
<command>php -i</command>. Якщо PHP матиме будь-яку проблему, то вона покаже
|
||
відповідне повідомлення помилки, яке дасть вам уявлення "що робити далі".
|
||
Якщо ж вам видається повен екран HTML-коду (що є виводом функції
|
||
<function>phpinfo</function>), то PHP працює справно, і проблема можливо
|
||
стосується конфігурації вебсервера, яку вам потрібно двічі перевірити.
|
||
</para>
|
||
</answer>
|
||
</qandaentry>
|
||
|
||
<qandaentry xml:id="faq.installation.undefinedsyms">
|
||
<question>
|
||
<para>
|
||
Деякі Операційні Системи: Я встановив PHP без помилок, але коли намагаюсь
|
||
запустити Apache, то отримую помилки "undefined symbol" (невизначений символ):
|
||
<programlisting role="shell">
|
||
[mybox:user /src/php5] root# apachectl configtest
|
||
apachectl: /usr/local/apache/bin/httpd Undefined symbols:
|
||
_compress
|
||
_uncompress
|
||
</programlisting>
|
||
</para>
|
||
</question>
|
||
<answer>
|
||
<para>
|
||
Це повідомлення насправді стосується не PHP, а клієнтської бібліотеки MySQL.
|
||
В деяких випадках потрібно <option role="configure">--with-zlib</option>,
|
||
а в деяких - ні. Дана проблема згадана в ЧаПі MySQL.
|
||
</para>
|
||
</answer>
|
||
</qandaentry>
|
||
|
||
<qandaentry xml:id="faq.installation.cgierror">
|
||
<question>
|
||
<para>
|
||
Windows: Я встановив PHP, але коли намагаюсь доступитись до PHP-скриптів
|
||
через веббраузер, то отримую таку помилку:
|
||
<screen>
|
||
<![CDATA[
|
||
cgi error:
|
||
The specified CGI application misbehaved by not
|
||
returning a complete set of HTTP headers.
|
||
The headers it did return are:
|
||
]]>
|
||
</screen>
|
||
</para>
|
||
</question>
|
||
<answer>
|
||
<para>
|
||
Це повідомлення означає, що PHP не змогла взагалі нічого вивести. Щоб отримати
|
||
зрозуміле повідомлення про помилку, з командного рядка, змініть поточну
|
||
директорію на ту, де знаходиться виконавчий файл PHP
|
||
(у Windows це <filename>php.exe</filename>) та запустіть команду
|
||
<command>php -i</command>. Якщо PHP матиме будь-яку проблему, то вона покаже
|
||
відповідне повідомлення помилки, яке дасть вам уявлення "що робити далі".
|
||
Якщо ж вам видається повен екран HTML-коду (що є виводом функції
|
||
<function>phpinfo</function>), то PHP працює справно.
|
||
</para>
|
||
<para>
|
||
Як тільки PHP справно запрацює, з командного рядка, спробуйте знову
|
||
доступитись до скрипта через браузер. Якщо проблема ще залишається, то
|
||
причина може бути однією з наступних:
|
||
</para>
|
||
<itemizedlist>
|
||
<listitem>
|
||
<simpara>
|
||
Анонімний інтернет-користувач <literal>ISUR_<тут-ім'я-машини></literal>,
|
||
через відсутність прав, не може отримати доступ до PHP-скриптів,
|
||
<filename>php.exe</filename>, <filename>php5ts.dll</filename>, &php.ini;
|
||
або до будь-якого PHP-розширення, яке ви намагаєтесь завантажити.
|
||
</simpara>
|
||
</listitem>
|
||
<listitem>
|
||
<simpara>
|
||
Файла зі скриптом не існує (або, можливо, він не там, де ви його уявляєте,
|
||
по відношенню до кореневої директорії вашого вебсервера). Зауважте, що
|
||
в IIS ви можете попастись на це повідомлення, якщо поставите галочку
|
||
'check file exists' (перевіряти наявність файла) під час налаштування
|
||
співставлення скриптів (їх мапінгу) в Менеджері Internet Services.
|
||
Насправді, якщо файлу зі скриптом не існує, то вебсервер повертатиме 404
|
||
помилку. Також існує додаткова перевага в тому, що IIS буде виконувати
|
||
будь-яку автентифікацію, яка базується на NTLanMan-дозволах для файлів
|
||
зі скриптами.
|
||
</simpara>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</answer>
|
||
</qandaentry>
|
||
|
||
<qandaentry xml:id="faq.installation.phpandiis">
|
||
<question>
|
||
<para>
|
||
Windows: Я дотримувався всіх інструкцій, але все ще не можу запустити PHP
|
||
та IIS, для їх сумісної роботи!
|
||
</para>
|
||
</question>
|
||
<answer>
|
||
<para>
|
||
Переконайтесь, що всі користувачі, кому потрібно запускати PHP-скрипти,
|
||
мають права на запуск <filename>php.exe</filename>! IIS використовує
|
||
анонімного користувача, який додається під час встановлення IIS. Цьому
|
||
користувачу потрібні права на запуск <filename>php.exe</filename>. Права
|
||
на запуск <filename>php.exe</filename> також потрібні для будь-якого
|
||
авторизованого користувача. А IIS4, потрібно повідомити, що PHP є
|
||
скриптовою системою. Також, вам буде цікаво прочитати
|
||
<link linkend="faq.installation.forceredirect">цей пункт ЧАПу</link>.
|
||
</para>
|
||
</answer>
|
||
</qandaentry>
|
||
|
||
<qandaentry xml:id="faq.installation.forceredirect">
|
||
<question>
|
||
<para>
|
||
При запуску PHP як CGI на IIS, PWS, OmniHTTPD або Xitami,
|
||
я отримую наступну помилку: <literal>Security Alert! PHP CGI
|
||
cannot be accessed directly.</literal>
|
||
</para>
|
||
</question>
|
||
<answer>
|
||
<para>
|
||
Вам потрібно встановити для директиви <link linkend="ini.cgi.force-redirect">
|
||
cgi.force_redirect</link> значення <literal>0</literal> (початково
|
||
встановлено <literal>1</literal>), а також переконайтесь, цю що директиву
|
||
не закоментовано (через символ крапки-з-комою <literal>;</literal>). Як і всі
|
||
директиви, вона також знаходиться у файлі &php.ini;
|
||
</para>
|
||
<para>
|
||
Оскільки початково встановлено <literal>1</literal>, то дуже важливо,
|
||
щоб ви переконались на 100%, що буде читатись коректний файл &php.ini;.
|
||
Читайте докладніше в
|
||
<link linkend="faq.installation.findphpini">цьому пункті ЧаПів</link>.
|
||
</para>
|
||
</answer>
|
||
</qandaentry>
|
||
|
||
<qandaentry xml:id="faq.installation.findphpini">
|
||
<question>
|
||
<para>
|
||
Як я можу переконатись, що мій файл &php.ini; знаходиться та читається?
|
||
Схоже, що коли я його змінюю, мої зміни не впроваджуються.
|
||
</para>
|
||
</question>
|
||
<answer>
|
||
<para>
|
||
Щоб переконатись, що файл &php.ini; читається через PHP, викличте функцію
|
||
<function>phpinfo</function>. Вгорі виведеної таблиці, знайдіть пункт
|
||
<literal>Configuration File (php.ini)</literal>, де буде перелік, де саме
|
||
PHP шукає файл &php.ini; та чи було його прочитано. Якщо вказати тільки
|
||
директорію <envar>PATH</envar>, то файл не буде прочитано; вам слід покласти
|
||
&php.ini; в цю директорію. Якщо &php.ini; знаходиться в <envar>PATH</envar>,
|
||
його буде прочитано.
|
||
</para>
|
||
<para>
|
||
Якщо &php.ini; знаходиться в місці, де він читається, та PHP запущено як
|
||
модуль, то переконайтесь, що ви перезапустили вебсервер після внесення
|
||
змін до &php.ini;
|
||
</para>
|
||
<para>
|
||
Також прогляньте <function>php_ini_loaded_file</function>.
|
||
</para>
|
||
</answer>
|
||
</qandaentry>
|
||
|
||
<qandaentry xml:id="faq.installation.addtopath">
|
||
<question>
|
||
<para>
|
||
Як я можу додати директорію PHP до <envar>PATH</envar> на Windows?
|
||
</para>
|
||
</question>
|
||
<answer>
|
||
<para>
|
||
На Windows:
|
||
<itemizedlist>
|
||
<listitem><para>
|
||
Перейдіть в Панель керування та кляцніть по ярлику Система (Старт →
|
||
Панель керування)
|
||
</para></listitem>
|
||
<listitem><para>
|
||
Перейдіть на закладку Додатково
|
||
</para></listitem>
|
||
<listitem><para>
|
||
Клікніть кнопку 'Змінні оточення'
|
||
</para></listitem>
|
||
<listitem><para>
|
||
Огляньте блок 'Системні Змінні'
|
||
</para></listitem>
|
||
<listitem><para>
|
||
Знайдіть запис Path (можливо потрібно прокрутити список,
|
||
щоб знайти цю змінну)
|
||
</para></listitem>
|
||
<listitem><para>
|
||
Подвійним кліком відкрийте знайдений запис Path
|
||
</para></listitem>
|
||
<listitem><para>
|
||
Допишіть до існуючого запису символ ';' (якщо його немає в кінці) і далі
|
||
впишіть шлях до вашої директорії PHP (напр. <literal>;C:\php</literal>)
|
||
</para></listitem>
|
||
<listitem><para>
|
||
Натискайте OK
|
||
</para></listitem>
|
||
</itemizedlist>
|
||
</para>
|
||
<note>
|
||
<simpara>
|
||
Не забудьте перезавантажитись після того, як пройдете зазначені вище
|
||
кроки, щоб зміни для <envar>PATH</envar> були задіяні.
|
||
</simpara>
|
||
</note>
|
||
</answer>
|
||
</qandaentry>
|
||
|
||
<qandaentry xml:id="faq.installation.phprc">
|
||
<question>
|
||
<para>
|
||
Як зробити доступним файл &php.ini; для PHP на Windows?
|
||
</para>
|
||
</question>
|
||
<answer>
|
||
<para>
|
||
Є кілька варіантів це зробити. Якщо ви використовуєте Apache,
|
||
зверніться до документації Apache, в іншому випадку — ви
|
||
повинні встановити змінну оточення <varname>PHPRC</varname>:
|
||
</para>
|
||
</answer>
|
||
</qandaentry>
|
||
|
||
<qandaentry xml:id="faq.installation.apache.multiviews">
|
||
<question>
|
||
<para>
|
||
Чи можна використовувати Apache Content Negotiation (опцію MultiViews)
|
||
разом з PHP?
|
||
</para>
|
||
</question>
|
||
<answer>
|
||
<para>
|
||
Якщо посилатись на файли PHP разом з розширенням, то все працює справно.
|
||
Цей пункт ЧАПу призначений тільки для випадку, коли посилання на файли PHP
|
||
не містять розширення, та ви хочете використовувати Content Negotiation для
|
||
вибору файлів PHP з URL без розширень. В цьому випадку, замініть рядок
|
||
<literal>AddType application/x-httpd-php .php</literal> на такий:
|
||
<programlisting role="apache-conf">
|
||
<![CDATA[
|
||
AddHandler php5-script php
|
||
AddType text/html php
|
||
]]>
|
||
</programlisting>
|
||
Це рішення не працює для Apache 1, оскільки модуль PHP не ловить
|
||
<literal>php-script</literal>.
|
||
</para>
|
||
</answer>
|
||
</qandaentry>
|
||
|
||
<qandaentry xml:id="faq.installation.requestmethods">
|
||
<question>
|
||
<para>
|
||
Чи можна зробити обмеження з боку PHP, щоб обробляти тільки запити від
|
||
методів GET та POST?
|
||
</para>
|
||
</question>
|
||
<answer>
|
||
<para>
|
||
Ні, навпаки - можна обробляти запити, що відправляються будь-яким методом,
|
||
наприклад, CONNECT. Правильну відповідь статуса можна відправляти через
|
||
функцію <function>header</function>. Якщо ж вам потрібно, щоб оброблялись
|
||
тільки методи GET та POST, цього можна добитись завдяки наступній
|
||
конфігурації Apache:
|
||
<programlisting role="apache-conf">
|
||
<![CDATA[
|
||
<LimitExcept GET POST>
|
||
Deny from all
|
||
</LimitExcept>
|
||
]]>
|
||
</programlisting>
|
||
</para>
|
||
</answer>
|
||
</qandaentry>
|
||
|
||
</qandaset>
|
||
</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
|
||
-->
|