Использование heroku-fcgi для обработки файлов без расширения .php (Apache) - PullRequest
0 голосов
/ 23 декабря 2018

Обзор

Я пытаюсь разместить несколько устаревших приложений PHP на Heroku с Apache.Все они использовали следующий устаревший синтаксис для анализа любых неизвестных типов файлов (без расширения .php) как PHP.

DefaultType application/x-httpd-php

Это было заменено на AddType в Apache 2.4 (Heroku в настоящее время использует v2.4.37).Heroku также использует mod_proxy_fcgi для обработки PHP-файлов с помощью fcgi://heroku-fcgi.

Issue

У меня есть файл foo.test, и я хочу, чтобы он обрабатывался PHPFPM.Взяв подсказки из документов и конфигурации Apache по умолчанию , предоставленной Heroku , я попробовал вот что:

 # .htaccess

<FilesMatch \.test$>
    <If "-f %{REQUEST_FILENAME}">
        SetHandler proxy:fcgi://heroku-fcgi
    </If>
</FilesMatch>

# apache_app.conf (properly loaded via Procfile)

ProxyPassMatch "^/(.*\.test(/.*)?)$" "fcgi://heroku-fcgi/app/$1"

С обоими из них я получаю простой текст 403 Access denied.ответ от PHP FPM.Я уверен, что оба конфига загружаются правильно и указывают на обработчик FCGI, потому что изменение конечной точки приводит к другим ошибкам.

Мои навыки работы с Apache давно устарели, и я не могу найти какие-либо хорошие указатели в Интернете.Журнал ошибок Apache также чист.Будем благодарны за любые идеи (без очевидного «поменяйте все расширения на PHP, тупица»)

1 Ответ

0 голосов
/ 23 декабря 2018

Довольно очевидное решение.PHP FPM имеет свою собственную конфигурацию с флагом security.limit_extensions.По умолчанию используется значение .php.

. Решение состояло в том, чтобы сбросить это значение: security.limit_extensions =.Естественно, это может представлять некоторые угрозы безопасности, но эти приложения работают только для статической демонстрации.

Я использовал heroku/heroku-buildpack-php, но разветвил это, чтобы обновить этот файл .htaccess FilesMatch теперь должен работать, но я просто поместил его в конфигурационный файл Apache, чтобы избежать повторения между сайтами, которые я буду обслуживать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...