У меня работает 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.*
, и эффективно подделывает карту типов, которая называет все эти файлы, присваивая им те же типы мультимедиа и кодировки содержимого, которые были бы, если бы клиент запросил один из них по имени. Затем он выбирает лучшее, что соответствует требованиям клиента.
И должно быть это (выполнение без суффикса) отключено?
Вам решать. По умолчанию такое поведение отключено.