Рейтинг:2

Apache с HTTP/2 и upload_max_filesize для каждого каталога

флаг cn

Я только что обновил свой сервер apache2 до Debian 9.13 Stretch, чтобы начать использовать HTTP/2. Насколько я понимаю, что требует переключения с mod_php на PHP-FPM.

Проблема в том, что PHP-FPM не подчиняется определенным директивам apache из .htaccess. Например, я использовал php_value upload_max_filesize 900M в файле .htaccess в каталоге загрузки, чтобы увеличить размер файла и другие связанные параметры, такие как max_execution_time и post_max_size в более мелкой зернистости, чем использование глобального файла php.ini.

Вот некоторые из альтернатив, которые я уже пробовал:

  1. Использование PHP ini_set() метод: post_max_size и upload_max_filesize используются до запуска моего скрипта.
  2. Использование переопределяющих файлов .user.ini: далеко не идеальный вариант, так как потребуется ограничить загрузку файлов .ini в каждом отдельном месте, которое позволяет загружать материал (я могу использовать <Files> filter, чтобы отключить доступ для чтения, но не для загрузки).
  3. Переименование файла .user.ini в SOME_SCRAMBLED_TEST.ini и добавление к таким файлам запрета Require all: опасно, так как один php скандир в неправильном месте может раскрыть мою защищенную-безвестностью конфигурацию.
  4. Изменение его в сценарии php.ini: будет считаться последним вариантом; Я предпочитаю иметь довольно большой размер загрузки, чем позволять пользователям загружать файл .user.ini, который портит мой сервер.

Есть ли другая альтернатива использованию HTTP/2 и безопасному серверу, позволяющему загружать?

djdomi avatar
флаг za
использовать конфигурацию apache напрямую, чтобы ограничить ее?
Juan C. Roldán avatar
флаг cn
Привет @djdomi, спасибо за ответ! Не могли бы вы уточнить? Вы имеете в виду настройку в VirtualHost?
Рейтинг:0
флаг cn

После двух дней работы мне удалось это запустить.

Во-первых, запретить .user.ini опасное значение по умолчанию для чтения в каждом отдельном каталоге:

# пустое имя файла user_ini запрещает его использование.
user_ini.filename =

Затем включите его только для нужного каталога в apache2.conf файл, расположенный в /etc/apache2 (и отключить их чтение). Мы можем сделать это с помощью SetEnv с фильтром каталога:

<Directory /path/to/upload/directory>
        SetEnv PHP_VALUE "user_ini.filename = .user.ini"
        <Files ".user.ini">
                Require all denied
        </Files>
</Directory>

Затем, на /путь/к/загрузить/каталог, создать .user.ini файл с необходимой конфигурацией:

post_max_size = 2048M
upload_max_filesize = 2048M
максимальное_время_исполнения = 10
максимальное_входное_время = 10

Таким образом, вы можете иметь для каждого каталога .user.ini без включения его для всего сервера.

djdomi avatar
флаг za
Он был быстрее меня :)
Juan C. Roldán avatar
флаг cn
@djdomi рабочее давление :) спасибо за подсказку!

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.