Назад | Перейти на главную страницу

Apache с PHP, настроенным как FastCGI, и скриптами без суффикса

У меня работает FastCGI PHP внутри Apache с использованием mod_fcgid. Но я заметил, что скрипты PHP выполняются даже без указания суффикса .php.

Например: если файл mail.php затем http://example.com/mail.php и http://example.com/mail возвращает тот же вывод файла PHP mail.php

Это обычное поведение? И должно быть это (выполнение без суффикса) отключено?

моя конфигурация Apache:

AddHandler fcgid-script .php
<Directory "{WwwRoot}">
    Options -Indexes MultiViews FollowSymLinks +ExecCGI
    FCGIWrapper {ConfigsRoot}/fcgi-php5 .php
    Order allow,deny
    allow from all
</Directory>

с простой оберткой

#!/bin/sh
PHP_FCGI_CHILDREN=3
export PHP_FCGI_CHILDREN
PHP_FCGI_MAX_REQUESTS=2000
export PHP_FCGI_MAX_REQUESTS
/usr/bin/php5-cgi

Спасибо.

Это обычное поведение?

Это ваши конкретные настройки.

Решение: Options -MultiViews

Руководство по Apache говорит (вам придется немного прокрутить вниз):

Эффект MultiViews выглядит следующим образом: если сервер получает запрос на / некоторые / каталог / foo, если / некоторые / реж имеет включенные MultiViews и / некоторые / каталог / foo делает не существует, то сервер читает каталог в поисках файлов с именем foo.*, и эффективно подделывает карту типов, которая называет все эти файлы, присваивая им те же типы мультимедиа и кодировки содержимого, которые были бы, если бы клиент запросил один из них по имени. Затем он выбирает лучшее, что соответствует требованиям клиента.


И должно быть это (выполнение без суффикса) отключено?

Вам решать. По умолчанию такое поведение отключено.