Установка для веб-сервера Apache 2.x в системах Windows

Раздел содержит примечания и подсказки, которые касаются установки PHP для веб-сервера Apache 2.x в системах Microsoft Windows.

Замечание:

Сначала лучше прочитать пошаговую инструкцию по ручной установке PHP.

Прежде чем продолжить чтение руководства, разработчики PHP настаивают на знакомстве » с документацией к веб-серверу Apache, чтобы получить базовое представление о сервере Apache 2.x, и » примечаниями, которые касаются установки веб-сервера Apache 2.x в системы Windows.

Загрузите последнюю версию веб-сервера » Apache 2.x и совместимую версию PHP. Следуйте пошаговой инструкции по ручной установке PHP и возвращайтесь, чтобы продолжить интеграцию PHP и Apache.

Для работы с веб-сервером Apache 2.x в операционных системах Windows двоичные файлы PHP настраивают тремя способами. PHP запускают как обработчик — Apache-модуль, через который веб-сервер обрабатывает файлы с PHP-кодом, как CGI-программу или программу, которая работает через FastCGI-интерфейс.

Замечание: Обратите внимание: при указании путей в конфигурационных файлах веб-сервера Apache, который работает под ОС Windows, обратные слеши в путях наподобие c:\directory\file.ext требуется заменить прямыми: c:/directory/file.ext. Для путей с директориями также иногда требуется слеш в конце.

Установка PHP как Apache-обработчика PHP-файлов

Замечание: При работе через обработчик apache2handler, который обслуживает запросы к SAPI-интерфейсу, устанавливают потокобезопасные версии PHP (англ. TS, Thread Safe).

В файл конфигурации веб-сервера Apache httpd.conf вставляют следующие строки, чтобы загрузить PHP-модуль для Apache 2.x:

Пример #1 Пример конфигурации для обработки PHP-файлов модулем PHP в составе веб-сервера Apache 2.x

# До PHP 8.0.0 модуль назывался php7_module
LoadModule php_module "c:/php/php8apache2_4.dll"
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>
# Настраиваем путь к файлу php.ini
PHPIniDir "C:/php"

Замечание: В приведённых примерах вместо пути C:/php/ подставляют фактический путь к PHP. Убедитесь, что файл, который указали в директиве LoadModule, лежит в заданном месте. Для PHP 7 указывают файл php7apache2_4.dll или файл php8apache2_4.dll для PHP 8.

Запуск PHP как CGI-программы

» Документация Apache к CGI-интерфейсу даёт более полное понимание о запуске CGI-скриптов на веб-сервере Apache.

PHP-файлы, которые запускаются как CGI-скрипты, располагают в каталоге, который через директиву ScriptAlias назначали как каталог CGI-скриптов, чтобы запускать PHP-скрипты как программу, которая работает по протоколу CGI.

В PHP-файлы потребуется поместить строку #!, которая указывает на расположение двоичного файла PHP:

Пример #2 Пример расположения двоичного файла PHP и взаимодействие с веб-сервером Apache 2.x через CGI-интерфейс

#!C:/php/php.exe
<?php

phpinfo();

?>

Внимание

Сервер, который развернули в режиме CGI, открывается для ряда возможных уязвимостей. Пожалуйста, прочитайте раздел « О безопасности PHP в режиме CGI-программы », который объясняет, как защититься от таких атак.

Запуск PHP для работы по протоколу FastCGI

Запуск программ на языке PHP в режиме FastCGI даёт ряд преимуществ перед запуском PHP-программ в режиме CGI. Настройка этого способа несложная:

Скачайте модуль mod_fcgid с сайта » https://www.apachelounge.com. Бинарные файлы Win32 доступны для загрузки с этого сайта. Установите модуль по инструкции, которая идёт с файлами.

Настройте веб-сервер как в следующем примере, и внимательно измените пути так, чтобы они соответствовали установке веб-сервера в конкретной системе:

Пример #3 Настройка Apache для запуска PHP как FastCGI

LoadModule fcgid_module modules/mod_fcgid.so
# Где лежит файл php.ini?
FcgidInitialEnv PHPRC        "c:/php"
<FilesMatch \.php$>
    SetHandler fcgid-script
</FilesMatch>
FcgidWrapper "c:/php/php-cgi.exe" .php
Теперь файлы с расширением .php будет исполнять FastCGI-обёртка PHP.