Puncte:2

Apache cu HTTP/2 și upload_max_filesize per director

drapel cn

Tocmai mi-am actualizat serverul meu apache2 pe Debian 9.13 Stretch pentru a începe să folosesc HTTP/2. In ceea ce ma priveste, care necesită trecerea de la mod_php la PHP-FPM.

Problema este că PHP-FPM nu respectă anumite directive apache de la .htaccess. De exemplu, am folosit php_value upload_max_filesize 900M într-un fișier .htaccess din directorul de încărcare, pentru a crește dimensiunea fișierului și alți parametri înrudiți, cum ar fi timp_max_execuție și dimensiunea_max într-o formă mai fină decât utilizarea fișierului global php.ini.

Acestea sunt câteva dintre alternativele pe care le-am încercat deja:

  1. Folosind PHP ini_set() metodă: dimensiunea_max și upload_max_filesize sunt folosite înainte ca scriptul meu să fie pornit.
  2. Utilizarea fișierelor de înlocuire .user.ini: mai puțin decât ideală, deoarece ar necesita restricționarea încărcării fișierelor .ini în fiecare loc care permite încărcarea lucrurilor (pot folosi un <Files> filtru pentru a dezactiva accesul la citire, dar nu și încărcarea).
  3. Redenumirea fișierului .user.ini în SOME_SCRAMBLED_TEST.ini și adăugarea unui Require all denied la astfel de fișiere: periculos, deoarece un singur php scandir în locul greșit poate dezvălui configurația mea securizată prin obscuritate.
  4. Schimbarea acestuia în scriptul php.ini: ar lua aceasta ca ultima opțiune; Prefer să am o dimensiune de încărcare destul de mare decât să permit utilizatorilor să încarce un fișier.

Există vreo altă alternativă pentru a utiliza HTTP/2 și a avea un server securizat care permite încărcările?

djdomi avatar
drapel za
folosiți configurația apache direct pentru a o limita?
Juan C. Roldán avatar
drapel cn
Bună @djdomi, mulțumesc pentru răspuns! Ați putea, vă rog, să detaliați? Vrei să spui să-l configurezi în VirtualHost?
Puncte:0
drapel cn

După două zile de muncă, am reușit să funcționez.

În primul rând, interziceți .user.ini implicit periculos de a-l citi în fiecare director:

# un nume de fișier user_ini gol dezactivează utilizarea acestuia.
user_ini.filename =

Apoi, activați-l numai pentru directorul dorit de la apache2.conf fișierul aflat în /etc/apache2 (și dezactivați citirea acestora). Putem face acest lucru folosind SetEnv cu un filtru Director:

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

Apoi, la /cale/la/încărcare/director, creeaza o .user.ini fișier cu configurația necesară:

post_max_size = 2048M
upload_max_filesize = 2048M
max_execution_time = 10
max_input_time = 10

În acest fel, puteți avea un per-director .user.ini fără a-l activa pentru întregul server.

djdomi avatar
drapel za
El a fost mai rapid ca mine :)
Juan C. Roldán avatar
drapel cn
@djdomi work pressure :) multumesc pentru indiciu!

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.