Ручне встановлення

Цей розділ містить інструкції для ручного встановлення та конфігурування PHP на Microsoft Windows.

Вибір та скачування пакета PHP

Скачайте бінарний архів PHP зі сторінки » PHP для Windows: Бінарники та Сирці. Існує декілька різних zip-архівів - виберіть версію, відповідну до вашого веб-сервера:

  • Якщо PHP використовується з IIS, то вибирайте PHP VC11 Non Thread Safe або PHP з VC9 Non Thread Safe;

  • Якщо PHP використовується з IIS7 або вище, та PHP 5.3+, то потрібно вибирати бінарники PHP VC11 Non Thread Safe.

  • Якщо PHP використовується з Apache 1 або Apache 2 то вибирайте PHP 5.3 VC6 чи PHP 5.2 VC6.

Зауваження:

VC11 версії компільовані на Visual Studio 2012 та мають покращення в продуктивності і стабільності. Версії VC9 потребують встановлених » Microsoft 2008 C++ Runtime (x86) або » Microsoft 2008 C++ Runtime (x64).

Структура та вміст PHP-пакета

Розпакуйте вміст zip-архіву куди вам буде зручно, наприклад в C:\PHP\. Директорія та файлова структура після розпакування матиме приблизно такий вигляд:

Приклад #1 Структура пакета з PHP 5


c:\php
   |
   +--dev
   |  |
   |  |-php5ts.lib                 -- файл php5.lib є у версії "non thread safe" (без багатопоточності)
   |
   +--ext                          -- DLL-розширення для PHP
   |  |
   |  |-php_bz2.dll
   |  |
   |  |-php_cpdf.dll
   |  |
   |  |-...
   |
   +--extras                       -- пусто 
   |
   +--pear                         -- ініціалізуюча копія PEAR
   |
   |
   |-go-pear.bat                   -- скрипт встановлення PEAR
   |
   |-...
   |
   |-php-cgi.exe                   -- виконуючий файл CGI
   |
   |-php-win.exe                   -- файл, що виконує скрипти без відкриття консолі
   |
   |-php.exe                       -- виконуючий файл для командного рядка (CLI)
   |
   |-...
   |
   |-php.ini-development           -- початкове налаштування php.ini
   |
   |-php.ini-production            -- рекомендовані php.ini налаштування
   |
   |-php5apache2_2.dll             -- відсутній у версії "non thread safe" (без багатопоточності)
   |
   |-php5apache2_2_filter.dll      -- відсутній у версії "non thread safe" (без багатопоточності)
   |
   |-...
   |
   |-php5ts.dll                    -- ядро PHP DLL (php5.dll - у версії "non thread safe")
   | 
   |-...

Нижче наведено список модулів та виконавчих файлів вміщених в PHP zip-архів:

  • go-pear.bat - скрипт для встановлення PEAR. Детальнішу інформацію можна знайти на сторінці » Встановлення (PEAR).

  • php-cgi.exe - виконавчий CGI-файл, який може використовуватись при запуску PHP на IIS через CGI або FastCGI.

  • php-win.exe - файл для виконання PHP-скриптів без використання консолі (наприклад PHP-застосунки, що використовують Windows GUI).

  • php.exe - файл для виконання PHP скриптів через консоль (CLI).

  • php5apache2_2.dll - модуль Apache 2.2.X.

  • php5apache2_2_filter.dll - фільтр Apache 2.2.X.

Зміна файла php.ini

Після того, як php-пакет розпакували, скопіюйте файл php.ini-production в ту ж папку, та перейменуйте його на php.ini. Якщо необхідно, файл php.ini можна розміщувати в будь-якому іншому місці, але це вимагає додаткових кроків конфігурування PHP.

Файл php.ini говорить PHP, яку їй мати конфігурацію, та як працювати в тому середовищі, де її встановлено. Далі наведено кілька налаштувань файла php.ini, що допомагають PHP працювати краще у Windows. Деякі з них є необов'язковими. Також є багато інших директив, що можуть стосуватись вашого середовища - прогляньте список директив php.ini для детальнішої інформації.

Необхідні директиви:

  • extension_dir = <шлях до директорії розширень> - extension_dir повинен вказувати на директорію, де зберігаються файли розширення PHP. Шлях може бути абсолютним (напр. "C:\PHP\ext") або відносним (напр. ".\ext"). Розширення, які йтимуть нижче в списку файла php.ini повинні розміщуватись в цій директорії extension_dir.

  • extension = xxxxx.dll - Для кожного розширення, яке ви хочете підключити, повинен бути відповідний запис з директивою "extension=", що говорить PHP, які саме розширення в extension_dir потрібно завантажувати при старті.

  • log_errors = On - PHP має механізм ведення логів помилок, який можна використовувати щоб відправити помилки до файла або до сервіса (напр. syslog). Цей механізм працює в зв'язці з директивою error_log, яку зазначено нижче. При роботі на IIS, log_errors потрібно включати з визначеним error_log.

  • error_log = <шлях до файла логу помилок> - Директиву error_log потрібно визначати через абсолютний або відносний шлях до файла, де повинні зберігатись логи помилок PHP. Веб-сервер повинен мати права на запис до цього файла. Найбільш звичне місце для нього - тимчасові (TEMP) директорії, наприклад, "C:\inetpub\temp\php-errors.log".

  • cgi.force_redirect = 0 - Дана директива необхідна для роботи PHP на IIS. Це засіб захисту директорії, який вимагається багатьма іншими веб-серверами. Тим не менш, встановлення ненульового значення для неї, викличе проблеми роботи ядра PHP під IIS на Windows.

  • cgi.fix_pathinfo = 1 - Дозволяє PHP мати доступ до інформації про real path (реальний шлях), згідно зі специфікацією CGI. Впровадження FastCGI на IIS потребує цього визначення.

  • fastcgi.impersonate = 1 - FastCGI на IIS підтримує здатність ідентифікувати маркери безпеки викликаючого клієнта. Це дозволяє IIS визначати контекст безпеки, під яким було запущено запит.

  • fastcgi.logging = 0 - Запис FastCGI-логів потрібно відключити на IIS. Якщо цього не зробити, то будь-які повідомлення від будь-якого класу будуть сприйматись FastCGI як помилки умов, через що IIS генеруватиме HTTP 500 винятки.

Необов'язкові директиви:

  • max_execution_time = ## - Ця директива визначає максимальну кількість часу, яку PHP може витратити на виконання будь-якого сценарію. Початково встановлено 30 секунд. Збільшіть значення цієї директиви, якщо застосунок PHP потребує більше часу.

  • memory_limit = ###M - Кількість доступної пам'яті для процесів PHP, в мегабайтах. Початково - 128 МБ, що є цілком достатньо для більшості PHP застосунків, але інколи цього буває недостатньо.

  • display_errors = Off - Ця директива говорить PHP, чи потрібно включати будь-які помилки в потік, що повертається до веб-сервера. Якщо задати значення "On", то PHP буде відправляти помилки, визначені через директиву error_reporting. З міркувань безпеки, рекомендовано встановлювати значення "Off" на робочих серверах, щоб часом не відправити певну інформацію, небажану для розголошення, разом з помилками.

  • open_basedir = <шляхи до директорій, розділені крапкою з комою>, наприклад, openbasedir="C:\inetpub\wwwroot;C:\inetpub\temp". Ця директива визначає шляхи до директорій, де для PHP є дозвіл на виконання операцій з файловою системою. Будь-які операції з файлами, за межами визначених шляхів, призводитиме до помилки. Ця директива особливо корисна для обмеження PHP, яка встановлена в середовищі загального хостинга (shared hosting), з метою запобігання доступів для PHP-скриптів до будь-яких файлів за межами кореневої директорії веб-сервера.

  • upload_max_filesize = ###M та post_max_size = ###M - Максимально дозволені розміри файлів, що завантажуються на сервер, та відправляються методом POST, відповідно. Значення цих директив потрібно збільшити, якщо є необхідність обробляти великі файли, наприклад, фото чи відео.

Далі, після встановлення PHP на вашу систему, потрібно вибрати веб-сервер, та включити в ньому підтримку для PHP.

Окрім роботи через веб-сервер, PHP також може працювати і через командний рядок, як .BAT скрипт. Детальнішу інформацію з цього приводу можна отримати в розділі Командний рядок PHP на Microsoft Windows.

add a note add a note

User Contributed Notes 2 notes

up
1
md dot shahin dot hawladar at gmail dot com
9 months ago
when using apache we will add this php8apache2_4.dll module in httpd.config file

example: LoadModule php_module C:/php/php8apache2_4.dll

I extracted php in "C" drive
up
1
klaussantana at gmail dot com
1 year ago
If you're installing PHP 8.0.1 as Apache http server module, in httpd.conf you must use "php_module" in "LoadModule" directive instead of versioned names like in previous versions (aka, php5_module, php7_module, ...). Make the directive as follow:

LoadModule php_module "/path/to/php8apache2_4.dll"

I cracked my head over this...
To Top