Установка
Цей розділ містить спільні питання про те, як виконується установка PHP. Дистрибутиви PHP доступні майже для всіх операційних систем та веб-серверів.
Для установки PHP, следуйте инструкциям: Встановлення та налаштування
- Чому краще не користуватися Apache2 з багатопоточним "MPM" (event, worker) у промисловій експлуатації?
- ОС "Unix"/"Windows": Де шукати файл php.ini?
- Unix: Я встановив PHP, але при кожному відкритті будь-якого документа бачу 'Document Contains No Data', що це означає?
- Unix: Я встановив PHP, використовуючи RPMS, але Apache не обробляє PHP-сторінки, в чому справа?
- Unix: Я пропатчив Apache модулем FrontPage, і тепер PHP не працює. Тобто. PHP несумісний із модулями Apache FrontPage?
- Unix/Windows: Я встановив PHP, але при спробі відкрити PHP-файл браузером бачу просто порожній екран.
- Unix/Windows: Я встановив PHP, але коли намагаюся переглянути створену PHP-сторінку через браузер, то отримую помилку 500.
- Деякі операційні системи: Я встановив PHP без будь-яких помилок, але коли намагаюся запустити Apache, мені виводиться помилка: [mybox:user /src/php5] root# apachectl configtest apachectl: /usr/local/apache/bin/httpd Undefined symbols :_compress_uncompress
- Windows: Я встановив PHP, але коли намагаюся відкрити сторінку скрипту через браузер, отримую помилку: cgi error: specified CGI application misbehaved by returning a complete set of HTTP headers. The headers it did return are:
- Windows: Я все зробив за інструкцією, але PHP та IIS не хочуть працювати разом!
- Коли я запускаю PHP як CGI на IIS, PWS, OmniHTTPD або Xitami, я отримую таку помилку: Security Alert! PHP CGI може бути accessed directly..
- Як я можу зрозуміти, що мій php.ini знайдено та використовується? Таке враження, що зміни, що вносяться мною, ігноруються.
- Як я можу додати директорію з PHP до PATH у Windows?
- Як я можу зробити файл php.ini доступним для PHP у windows?
- Чи можна використовувати узгодження контенту Apache (опція MultiViews) із PHP?
- PHP обмежений роботою лише з методами GET та POST?
Чому краще не користуватися Apache2 з багатопоточним "MPM" (event, worker) у промисловій експлуатації?
PHP подібний до сполучної ланки. Це сполучна ланка для створення хороших веб-додатків шляхом об'єднання розрізнених сторонніх бібліотек в єдине ціле через використання інтуїтивно зрозумілого і простого для вивчення мовного інтерфейсу. Гнучкість та сила PHP заснована на стабільності та стійкості, що лежить в основі платформи. Щоб все працювало, потрібна робоча операційна система, робочий веб-сервер та робочі сторонні бібліотеки. Але коли хоч щось із них перестає працювати - PHP потребує способів швидкого визначення причини неполадки та її усунення. І коли ви ускладнюєте базовий фреймворк тим, що не ізолюєте потоки та сегменти пам'яті, що виконуються, і не надаєте потокам окремих ізольованих "пісочниць" - послаблюється вся PHP-система.
Якщо ви хочете використовувати багатопотоковий "MPM" - ознайомтеся з конфігурацією "FastCGI", згідно з якою PHP працює у власному просторі пам'яті.
ОС "Unix"/"Windows": Де шукати файл php.ini?
За замовчуванням в Unix він повинен бути /usr/local/lib, який відповідає <установочный-шлях>/lib. Багато хто захоче змінити цей шлях у момент компіляції, використовуючи опцію --with-config-file-path Наприклад, можна написати так:
--with-config-file-path=/etc
І потім скопіювати php.ini-development з дистрибутива /etc/php.ini і внести в нього всі необхідні зміни.
--with-config-file-scan-dir=PATH
У ОС "Windows", за замовчуванням, шлях до файлу php.ini - це шлях до директорії "Windows". Якщо ви користуєтесь веб-сервером "Apache", php.ini знаходиться на шляху: ?\program files\apache group\apache\. . Таким чином, на одному комп'ютері можна скористатися кількома файлами php.ini, відповідно до версій "Apache".
Смотрите также:файл налаштувань
Unix: Я встановив PHP, але при кожному відкритті будь-якого документа бачу 'Document Contains No Data', що це означає?
Це означає, що можливо PHP зіткнувся з якоюсь проблемою і падає в core-dump. Перегляньте логи помилок сервера, щоб перевірити це, а потім спробуйте відтворити ланцюжок кроків, що призвели до помилки; наприклад, створивши окрему тестову програму. І якщо ви вмієте користуватися 'gdb', це допоможе вам отримати стек викликів функцій (backtrace) для включення його у звіт про помилку, щоб полегшити виявлення причин проблеми розробникам. Якщо ви користуєтеся PHP як модулем для Apache, вам може бути корисним наступне:
-
Зупиніть httpd-процеси
-
gdb httpd
-
Знову зупиніть httpd-процеси
-
>run -X -f шлях_до_httpd.conf
-
Потім скопіюйте URL-адресу, що викликала проблему в браузері
-
>run -X -f шлях_до_httpd.conf
-
Якщо відбуватиметься core dump, gdb повідомить вас про це
-
Введіть bt
-
Увімкніть backtrace у звіт про помилку. І надішліть за адресою:» https://github.com/php/php-src/issues
Якщо ваш скрипт використовує регулярні вирази (preg_match() та подібні), перевірте, чи з однаковими пакетами обробки RegEx скомпіловані PHP та Apache? У разі PHP та Apache 1.3.x це відбувається автоматично.
Unix: Я встановив PHP, використовуючи RPMS, але Apache не обробляє PHP-сторінки, в чому справа?
Якщо ви встановили і Apache, і PHP з RPM-пакетів, вам знадобиться розкоментувати або додати деякі (або, можливо, всі) рядки з наступних, у вашому файлі httpd.conf:
#Extra Modules AddModule mod_php.c AddModule mod_perl.c
Extra Modules
LoadModule php_module modules/mod_php.so LoadModule php5_module modules/libphp5.so LoadModule perl_module modules/libperl.so
І додайте:
AddType application/x-httpd-php .php
... у область глобальних властивостей, або у властивості того VirtualDomain, для якого ви хочете включити підтримку PHP.
Unix: Я пропатчив Apache модулем FrontPage, і тепер PHP не працює. Тобто. PHP несумісний із модулями Apache FrontPage?
Ні, сумісний, але патч FrontPage впливає на структури Apache, потрібні для PHP. Перекомпіляція PHP (команда 'make clean; make') після встановлення патча може вирішити проблему.
Unix/Windows: Я встановив PHP, але при спробі відкрити PHP-файл браузером бачу просто порожній екран.
Виберіть у браузері опцію "дивитися код" і ви, можливо, побачите, ваш PHP-код. Це означає, що Apache не передав ваш скрипт інтерпретатору PHP. Значить щось неправильно з конфігурацією сервера. У цьому випадку перевірте конфігурацію веб-сервера відповідно до інструкцій з інсталяції PHP.
Unix/Windows: Я встановив PHP, але коли намагаюся переглянути створену PHP-сторінку через браузер, то отримую помилку 500.
Щось пішло не так, коли сервер спробував запустити PHP. Щоб побачити вихідну помилку, у командному рядку перейдіть в директорію, що містить виконуваний файл PHP (php.exe в Windows) і запустіть php -i. Якщо існують проблеми з запуском PHP, вам виведеться відповідна помилка, яка підкаже вам, що треба виправити. Якщо ви побачите безліч коду HTML (виведення функції phpinfo()), отже, PHP працює нормально, і ваша проблема пов'язана з налаштуваннями веб-сервера.
**Деякі операційні системи: Я встановив PHP без будь-яких помилок, але коли намагаюся запустити Apache, мені виводиться помилка:
[mybox:user /src/php5]root# apachectl configtest apachectl: /usr/local/apache/bin/httpd Undefined symbols:_compress_uncompress
**
Це означає, що проблема не в PHP, а у клієнтських бібліотеках MySQL. Деякі з них вимагають збирання PHP з опцією --with-zlib. Цей нюанс описано у MySQL FAQ.
**Windows: Я встановив PHP, але коли намагаюся відкрити сторінку скрипту через браузер, отримую помилку:
cgi error:
The specified CGI application misbehaved by not
returning a complete set of HTTP headers.
The headers it did return are:
**
Це означає, що PHP не зміг нічого вивести у стандартний потік введення-виведення. Щоб побачити вихідну помилку, у командному рядку перейдіть в директорію, що містить виконуваний файл PHP (php.exe в Windows) і запустіть php -i. Якщо існують проблеми з запуском PHP, вам виведеться відповідна помилка, яка підкаже вам, що треба виправити. Якщо ви побачите безліч коду HTML (виведення функції phpinfo()), отже PHP працює нормально.
Коли ви переконалися, що PHP працює в командному рядку, спробуйте звернутися до скрипту через браузер знову. Якщо знову виникне помилка - це може означати одну з таких проблем:
- Права на файл вашого скрипта, php.exe, php5ts.dll, php.ini або будь-якого модуля PHP не дозволяють анонімному користувачеві інтернету
ISUR_<machinename>
до них звернутись. - Файл скрипта відсутній (або, можливо, він не там, де ви думаєте, щодо кореневого каталогу веб-сервера). Зверніть увагу, що в IIS ви можете відловити цю помилку, позначивши опцію 'check file exists' в налаштуваннях "script mappings" в Internet Services Manager. Якщо файл відсутній, сервер натомість поверне помилку 404. При цьому також є додаткова перевага. IIS буде проводити перевірки аутентифікації для файлу скрипта, необхідні вам, ґрунтуючись на дозволах NTLanMan.
Windows: Я все зробив за інструкцією, але PHP та IIS не хочуть працювати разом!
Переконайтеся, що всі користувачі, яким може знадобитися запустити ваш PHP скрипт, мають право запускати php.exe! IIS використовує анонімного користувача, що створюється під час інсталяції. Цей користувач повинен мати право на запуск php.exe. Також кожен авторизований користувач повинен мати права на запуск php.exe. Для IIS4 ви скажете йому, що PHP - це інтерпретатор скриптів. Також прочитайте цей FAQ
Коли я запускаю PHP як CGI на IIS, PWS, OmniHTTPD або Xitami, я отримую таку помилку: Security Alert! PHP CGI cannot be accessed directly.
Ви повинні встановити опцію cgi.force_redirect рівну По умолчанию она равна . Переконайтеся, що вона не закоментована (за допомогою ). Як і всі опції PHP, вона налаштовується у php.ini
Так как она по умолчанию равна , важливо переконатися, що використовується саме той php.ini, який потрібен. Читайте цей FAQ для подробиць.
Як я можу зрозуміти, що мій php.ini знайдено та використовується? Таке враження, що зміни, що вносяться мною, ігноруються.
Щоб перевірити, який саме php.ini використовується, запустіть функцію phpinfo(). Десь угорі буде список із назвою Configuration File (php.ini)
. З нього ви зможете зрозуміти який саме php.ini використовується. Якщо вказана директорія в PATH, а файл конфігурації не прочитаний, то просто скопіюйте його в цю директорію. Якщо php.ini включено PATH - це означає, що він прочитаний.
Якщо php.ini читається і ви запускаєте PHP як модуль, то після внесення змін до php.ini необхідно перезавантажити веб-сервер.
Также смотрите описаниеphp_ini_loaded_file()
Як я можу додати директорію з PHP до PATH у Windows?
У Windows:
-
Старт → Панель Управління → Система
-
Перейдіть на вкладку 'Додатково'
-
Натисніть кнопку 'Змінні Оточення'
-
Перегляньте розділ 'Системні Змінні'.
-
Знайдіть рядок, що містить змінну PATH
-
Здійсніть на ній подвійне клацання мишею
-
Допишіть у кінець рядка шлях до PHP, не забувши додати перед ним ';' (наприклад
;C:\php
) . -
Натисніть OK
Зауваження: Не забудьте перезавантажитися після описаних вище дій і після перезавантаження перевірити, чи змінна PATH містить потрібний шлях.
Як я можу зробити файл php.ini доступним для PHP у windows?
Є кілька способів зробити це. Якщо ви використовуєте Apache, зверніться до документації Apache, в іншому випадку ви повинні встановити змінне середовище PHPRC.
Чи можна використовувати узгодження контенту Apache (опція MultiViews) із PHP?
Якщо посилання на файли PHP містять розширення, все буде працювати відмінно. Це FAQ застосовується тільки для випадків, коли посилання не містять розширення і ви хочете використовувати узгодження контенту для PHP-файлів з URL. У цьому випадку замініть рядок AddType application/x-httpd-php .php
на:
AddHandler php5-script php AddType text/html php
Це рішення не спрацює з Apache 1, оскільки модуль PHP не відловлює php-script
PHP обмежений роботою лише з методами GET та POST?
Ні, можна працювати з будь-якими запитами, наприклад CONNECT. Правильний статус відповіді має надсилатися функцією header(). Якщо вам потрібно, щоб PHP працювати тільки з методами GET та POST, необхідно налаштувати Apache наступним чином:
Deny from all