Подтвердить что ты не робот

Сделать расширение файла интерпретируется PHP

Я добавил это в мой .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>

но он имеет ту же внутреннюю ошибку сервера.

4b9b3361

Ответ 1

Проверено и проверено на работу:

Поскольку вы упомянули, что используете Webmin, я адаптировал свой ответ для Webmin. Вы можете сделать это, отредактировав конфигурацию Apache через оболочку.

Отмечу, что обычно лучше редактировать конфигурацию Apache, и в этом случае, вероятно, неизбежно, так как я не думаю, что вы можете сделать это редактирование в .htaccess. Хотя может быть и хак, с которым я не знаком, администратор сервера, вероятно, захочет сохранить эту блокировку внутри конфигурации Apache. Мысли файлов .htaccess с расширениями файлов-изгоев, которые распространяются по всей директории, не только звучат медленно, но и очень небезопасны.

Действия

Я установил Apache на Ubuntu 14.04 через VirtualBox. Я добавил Webmin и FastCGI.

Я сделал следующие шаги:

  • Войдите в Webmin, перейдите на свой виртуальный хост.
  • Нажмите Изменить директивы
  • Добавьте нижеследующее:

<Directory />
    #Your SetHandler script here 
    #(@MrTux script works here but NOT IN .htaccess)

    Require all granted
</Directory>
  1. Нажмите "Сохранить"
  2. Нажмите "Применить изменения" вверху.
  3. Все готово!

Я хочу отметить, что SetHandler передает некоторые заголовки, поэтому, если вы объявляете это в .htaccess, есть вероятность, что заголовки уже отправлены, что и вызывает вашу ошибку. Опять же, .htaccess не является предпочтительным способом установки правил, если у вас есть контроль над вашей системой. В этом случае это, вероятно, вызовет проблемы безопасности.

Ответ 2

Кажется, что модуль FastCGId не знает, как выполнить команду script - FcgidWrapper, кажется, отсутствует (поскольку ваш PHP script не имеет Shebang).

В зависимости от вашего дистрибутива вы должны настроить его вручную или вы можете настроить существующую директиву, которая уже обрабатывает файлы .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 не может записывать в журналы или не может выполнить оболочку script. Здесь было бы очень полезно, если бы вы могли указать, правильно ли выполняются нормальные .php файлы.

Ответ 4

Я не парень fastcgi. я googled проблема. У меня есть 2 похожих вопроса, размещенных в virtualmin. Я просто добавляю ответ, размещенный там.

https://www.virtualmin.com/node/34903

  • перейти на виртуальный сервер\ваш виртуальный сервер\конфигурация сервера\параметры сайта \
  • выберите "Apache mod_php (запустится как пользователь Apache)", затем сохраните
  • выключить "FCGId (запустить как владелец виртуального сервера)" (он попросит вас запустить сценарии CGI в качестве владельца домена)
  • Сохранить

https://www.virtualmin.com/node/25539

Перейдите в /home/sitename/fcgi -bin Используйте команду follpwoing для reset неизменяемого флага

"chattr -i php5.fcgi"

Затем удалите каталоги /home/sitename/etc и/home/sitename/fcgi-bin (убедитесь, что все, что не связано с php и т.д.), С помощью virtualmin переключитесь обратно в режим apache mod_php, а затем вернитесь в режим FCGId. Сайт должен теперь работать. Не забывайте обрабатывать любые файлы/каталоги в public_html, которые были apache: Обратите внимание, что оба они обычно являются sitename.

Надеюсь, это поможет вам.

Ответ 5

Я задаю обработчик fcgid-script. Это не обычный обработчик PHP, даже для FCGI. Обычно вы увидите

<FilesMatch "\.test$">
     SetHandler application/x-httpd-php
</FilesMatch>

или

<FilesMatch "\.test$">
     SetHandler php5-fcgi
</FilesMatch>

Если ни одна из этих работ не работает, убедитесь, что установлен PHP FCGI.

Ответ 6

Для всех сценариев CGI требуется добавить строку Shebang в верхней части script.

Итак, если вы хотите запустить PHP, вы должны включить что-то вроде:

#!/path/to/php

В верхней части вашего script, чтобы он работал