Подключение интерпретатора языка программирования PHP к веб-серверу Apache как модуль. Эта статья полностью описывает правильное подключение интерпретатора языка программирования PHP к веб-серверу Apache в качестве модуля. Сперва рассмотрим всё по пунктам, а в конце статьи приведён полный код.
Загружаем модуль PHP:
LoadModule php5_module "z:\server\php\php5apache2_4.dll"
Укажем директорию в которой находится PHP (опционально):
PHPIniDir "z:\server\php"
Проверим загружен ли модуль mime:
<IfModule !mime_module> Error "Module is not loaded: mod_mime" </IfModule>
Добавление обработчика
Добавляем непосредственно обработчик php на (опционально) файлы php и php-source для файлов phps. Добавить обработчик можно разными способами и директивами модуля mod_mime. Рассмотрим все возможные директивы добавления обработчиков.
Директива AddHandler
AddHandler application/x-httpd-php .php AddHandler application/x-httpd-php-source .phps
Файлы, имеющие расширение php будут обслуживаться указанным обработчиком application/x-httpd-php. После добавления этих строк в файл httpd.conf, любой файл, содержащий расширение «.php», будет рассматриваться как программа PHP. Аргумент расширения файла не чувствителен к регистру и может быть определено с или без ведущей точки.
Имена файлов могут иметь несколько расширений, например, exploit.php.jpg, и аргумент расширения заданный в этой директиве будет сравнивается с каждым из них, т.е. php и jpg. После чего будет применён обработчик PHP к этому файлу, что создаёт уязвимость в системе безопасности и несёт потенциальную угрозу. Поэтому перед добавлением обработчика файлов директивой AddHandler надо сперва проверить конечное (финальное) расширение файла, чтобы убедиться, что это именно PHP файл:
<FilesMatch \.php$> AddHandler application/x-httpd-php .php .php2 .php3 .php4 .php5 .php6 .phtml </FilesMatch> <FilesMatch "\.phps$"> AddHandler application/x-httpd-php-source .phps </FilesMatch>
Или если надо добавить расширения .php, .php2, .php3, .php4, .php5, .php6 и .phtml, это можно записать так:
<FilesMatch "\.ph(p[2-6]?|tml)$"> AddHandler application/x-httpd-php .php .php2 .php3 .php4 .php5 .php6 .phtml </FilesMatch>
Директива AddType
AddType application/x-httpd-php .php .php3 .php4 .php5 .phtml AddType application/x-httpd-php-source .phps
AddType директива отображает данные расширения имени файла на указанный тип контента. Медиа-типа является тип носителя использовать для имен файлов , содержащих расширение . Это отображение добавлена к любому уже в силе, отвергая любые картографии , которые уже существуют для того же расширения. Можно указать несколько расширений файлов в одной директиве. Аргумент расширение нечувствителен к регистру и может быть определено с или без ведущей точки. Имена файлов могут иметь несколько расширений и аргумент расширения будет сравнивается с каждым из них. Рекомендуется, чтобы новые типы медиа быть добавлены с помощью AddType директивы вместо изменения TypesConfig файла. По сути директива AddType работает так же как и директива AddHandler, только добавляет ещё mime типы. Таким образом перед добавлением обработчика файлов директивой AddType надо так же сперва проверить конечное расширение файла, чтобы убедиться, что это именно файл PHP:
<FilesMatch \.php$> AddType application/x-httpd-php .php .php2 .php3 .php4 .php5 .php6 .phtml </FilesMatch> <FilesMatch "\.phps$"> AddType application/x-httpd-php-source .phps </FilesMatch>
Или если надо добавить расширения .php, .php2, .php3, .php4, .php5, .php6 и .phtml, это можно записать так:
<FilesMatch "\.ph(p[2-6]?|tml)$"> AddType application/x-httpd-php .php .php2 .php3 .php4 .php5 .php6 .phtml </FilesMatch>
Директива SetHandler
Данная директива переопределяет обработчики по-умолчанию, поэтому надо указывать в каком случае нужно установить обработчик. В нашем случае устанавливаем обработчик application/x-httpd-php для файлов заканчивающихся на «.php» и обработчик application/x-httpd-php-source для файлов заканчивающихся на «.phps».
<FilesMatch "\.php$"> SetHandler application/x-httpd-php </FilesMatch> <FilesMatch "\.phps$"> SetHandler application/x-httpd-php-source </FilesMatch>
Или, если мы хотим добавить расширения .php, .php2, .php3, .php4, .php5, .php6 и .phtml, это можно записать так:
<FilesMatch "\.ph(p[2-6]?|tml)$"> SetHandler application/x-httpd-php </FilesMatch>
Конечный результат
Таким образом конечный полный, максимально правильный и безопасный код подключения к Apache2 модуля PHP, установка mime типов и задание обработчика будет выглядеть так:
LoadModule php5_module "z:\server\php\php5apache2_4.dll" PHPIniDir "z:\server\php" <IfModule !mime_module> Error "Module is not loaded: mod_mime" </IfModule> <FilesMatch "\.ph(p[2-6]?|tml)$"> AddType application/x-httpd-php .php .php2 .php3 .php4 .php5 .php6 .phtml </FilesMatch> <FilesMatch "\.phps$"> AddType application/x-httpd-php-source .phps </FilesMatch> <FilesMatch "\.ph(p[2-6]?|tml)$"> AddHandler application/x-httpd-php .php .php2 .php3 .php4 .php5 .php6 .phtml </FilesMatch> <FilesMatch "\.phps$"> AddHandler application/x-httpd-php-source .phps </FilesMatch>
В это же время минимальный код подключения модуля PHP выглядит так:
LoadModule php5_module "z:\server\php\php5apache2_4.dll" AddType application/x-httpd-php .php .php2 .php3 .php4 .php5 .php6 .phtml
или так:
LoadModule php5_module "z:\server\php\php5apache2_4.dll" AddHandler application/x-httpd-php .php .php2 .php3 .php4 .php5 .php6 .phtml
ну или так:
LoadModule php5_module "z:\server\php\php5apache2_4.dll" PHPIniDir "z:\server\php" AddHandler application/x-httpd-php .php .php2 .php3 .php4 .php5 .php6 .phtml AddHandler application/x-httpd-php-source .phps AddType application/x-httpd-php .php .php2 .php3 .php4 .php5 .php6 .phtml AddType application/x-httpd-php-source .phps
Ссылки
- http://php.net/manual/ru/install.unix.apache2.php — Apache 2.x на Unix системах
- http://httpd.apache.org/docs/2.4/mod/mod_mime.html — Модуль Apache mod_mime