Я добавил это в мой файл .htaccess:
AddHandler fcgid-script .test
(Я использую FastCGI / VirtualMin / WebMin)
И создал файл test.test с содержимым;
<?php echo "test"; ?>
Это приводит к внутренней ошибке сервера и это сообщение в журнале ошибок:
[Thu Apr 16 14:12:57.631287 2015] [fcgid:warn] [pid 2646] (104)Connection reset by peer: [client xxxx:53595] mod_fcgid: error reading data from FastCGI server
[Thu Apr 16 14:12:57.631402 2015] [core:error] [pid 2646] [client xxxx:53595] End of script output before headers: test.test
Что я делаю неправильно? Я пытался использовать разные имена обработчиков, такие как x-httpd-php или x-httpd-php5, но это ничего не дает.
Я также попробовал:
<FilesMatch "\.test$">
SetHandler fcgid-script
</FilesMatch>
но у него такая же внутренняя ошибка сервера.
Проверено и проверено на работу:
Поскольку вы упомянули, что используете Webmin, я адаптировал свой ответ для Webmin. Вы можете сделать это, отредактировав конфигурацию Apache через оболочку.
Я отмечу, что обычно предпочтительнее редактировать конфигурацию Apache, и в этом случае, вероятно, это неизбежно, так как я не верю, что вы можете сделать такой вид редактирования в .htaccess
, Хотя может быть хак, с которым я не знаком, администратор сервера, вероятно, захочет сохранить это в конфигурации apache. Мысли о .htaccess
файлы с мошенническими расширениями файлов, летающие по отдельным каталогам, звучат не только медленно, но и крайне небезопасно.
Я установил Apache на Ubuntu 14.04 через VirtualBox. Я добавил Webmin и FastCGI.
Я предпринял следующие шаги:
<Directory />
#Your SetHandler script here
#(@MrTux's script works here but NOT IN .htaccess)
Require all granted
</Directory>
Я отмечу, что SetHandler пропускает некоторые заголовки, поэтому, если вы объявите это в .htaccess
есть вероятность, что заголовки уже отправлены, что и вызывает вашу ошибку. Снова, .htaccess
не является предпочтительным способом установки правил, если у вас есть контроль над вашей системой. В этом случае это может вызвать проблемы с безопасностью в любом случае.
Кажется, что модуль FastCGId не знает, как выполнить ваш скрипт — FcgidWrapper директива, кажется, отсутствует (так как ваш PHP-скрипт не имеет притон).
В зависимости от вашего дистрибутива вы должны настроить его вручную, или вы можете настроить существующую директиву, которая уже обрабатывает файлы .php, чтобы также обрабатывать файлы .test (Обычно это следует делать с помощью директивы «SetHandler fcgid-script» и установки / дублирования Директива FcgidWrapper).
Скорректированный пример (взят из https://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html#examples):
<FilesMatch "\.test$">
AddHandler fcgid-script .test
</FilesMatch>
Options +ExecCGI
FcgidWrapper /usr/bin/php5-cgi .test
Больше информации и примеров: https://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html#examples а также http://tltech.com/info/php-on-fcgid/
Другие проблемы могут быть основаны на разрешениях, например если вы используете suexec, то процесс fastcgid не может записывать в журналы или не может выполнить сценарий оболочки. Здесь было бы очень полезно, если бы вы могли указать, правильно ли выполняются нормальные .php-файлы.
Попробуйте использовать это в своем файле htaccess
AddType application/x-httpd-php .test
Смотрите этот вопрос переполнения стека: Проблема с выполнением CGI-скриптов на Apache.
Я не парень Fastcgi. я Googled проблема. Я получил 2 аналогичных вопроса, размещенных в virtualmin
, Я просто добавляю ответ, опубликованный там.
Перейти / home / sitename / fcgi-bin
Используйте команду follpwoing для сброса неизменного флага
«chattr -i php5.fcgi»
Затем удалите каталоги / home / sitename / etc и / home / sitename / fcgi-bin (убедитесь, что все, что не связано с php в etc, сохранено)
С помощью virtualmin вернитесь в режим apache mod_php, а затем обратно в режим FCGId. Сайт теперь должен работать. Не забудьте забить любые файлы / каталоги в public_html, которые были apache to: Обратите внимание, что обычно это оба sitename.
Надеюсь, это поможет вам.
Я ставлю под сомнение fcgid-script
обработчик. Это не обычный обработчик PHP, даже для FCGI. Обычно вы увидите
<FilesMatch "\.test$">
SetHandler application/x-httpd-php
</FilesMatch>
Или же
<FilesMatch "\.test$">
SetHandler php5-fcgi
</FilesMatch>
Если ни один из этих способов не работает, убедитесь, что PHP FCGI установлен.
Все сценарии CGI требуют, чтобы вы добавили строку Shebang вверху сценария.
Так что если вы хотите запустить PHP, вы должны были включить что-то вроде:
#!/path/to/php
В верхней части вашего скрипта, чтобы он работал