Generator .htaccess PHP
Limity PHP i ochrona katalogu uploads
-
1Wprowadź dane
Wpisz treść, wklej tekst lub załaduj plik z dysku. -
2Kliknij przycisk
Narzędzie natychmiast przetworzy Twoje dane w przeglądarce. -
3Pobierz wynik
Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
return "Wynik gotowy w 0.1s";
}
Oceń to narzędzie:
Powiązane narzędzia
Inne narzędzia, które mogą Ci się przydaćGenerator ustawień PHP w .htaccess
Na serwerach z PHP jako modułem Apache limity PHP można ustawiać w pliku .htaccess. To wygodne, gdy nie masz dostępu do głównego php.ini.
Dyrektywy php_value
| Dyrektywa | Efekt |
|---|---|
| memory_limit | limit pamięci skryptu |
| upload_max_filesize | limit rozmiaru pliku |
| post_max_size | limit żądania POST |
| max_execution_time | limit czasu działania |
Blokada PHP w uploads
Katalog z plikami od użytkowników to częsty wektor ataku. Wyłączenie tam silnika PHP (php_flag engine off) i zablokowanie plików .php uniemożliwia wykonanie przesłanego skryptu.
Przykład
<IfModule mod_php.c>
php_value memory_limit 256M
php_value upload_max_filesize 64M
</IfModule>
Jak generator składa reguły PHP w .htaccess
Generator nie ma wbudowanych tablic stałych i nie dobiera limitów za użytkownika. Działa jak formularz, który składa tekst: pobiera wartości wpisane w polach, sprawdza podstawowe zależności i tworzy blok dyrektyw PHP. W praktyce sprowadza się to do trzech kroków: zbierz dane, złóż dyrektywy, opakuj w warunek. Jeśli wybierzesz opakowanie IfModule, wynik zostanie otoczony warunkiem. Dzięki temu plik .htaccess nie wywoła błędu na serwerze, na którym PHP nie jest ładowane jako mod_php.
Mechanizm opiera się na składni Apache. Dyrektywy php_value ustawiają konkretną wartość, a php_flag włącza albo wyłącza opcję binarną. Generator nie wysyła nic na serwer i nie zapisuje pliku. Zwraca tylko kod do skopiowania. To istotne, bo .htaccess działa lokalnie dla katalogu i jego podkatalogów. Zmiana jest odczytywana przy żądaniu, ale tylko gdy Apache obsługuje PHP jako moduł. Nie ma tu miejsca na ukryte wartości domyślne, ponieważ kod narzędzia nie zawiera tablic stałych.
Narzędzie nie przelicza automatycznie jednostek ani nie wykrywa konfliktów między dyrektywami. Nie wie, jaki masz hosting, jaki moduł PHP jest aktywny i jakie limity narzucił administrator. Wynik jest więc propozycją konfiguracji. Przed wdrożeniem sprawdź, czy serwer pozwala na AllowOverride i czy PHP nie działa w trybie FPM. Jeśli nie wiesz, jakie wartości są bezpieczne, zacznij od ostrożnych zmian i obserwuj logi.
Przykład krok po kroku: limit 256M i plik 128M
- Wpisz w polu memory_limit wartość 256M. W bajtach to 268 435 456 B. Ta wartość określa górny limit pamięci dla skryptu.
- Wpisz upload_max_filesize jako 128M. W bajtach to 134 217 728 B. To dwukrotność 64M, czyli wartość często używaną w domyślnych przykładach.
- Ustaw post_max_size na 256M, czyli 268 435 456 B. To większe niż upload_max_filesize, więc całe żądanie POST zmieści plik 128M oraz pola formularza i nagłówki.
- Wybierz opcję IfModule mod_php.c. Generator otoczy dyrektywy warunkiem, który zapobiega błędom, gdy PHP nie jest modułem Apache.
- Skopiuj wygenerowany blok do pliku .htaccess w katalogu, który ma mieć nowe limity. Nie wklejaj go do katalogu głównego, jeśli chcesz ograniczyć zmianę tylko do wybranej aplikacji.
- Zapisz plik i wykonaj testowe żądanie. Jeśli serwer zwróci błąd 500, cofnij zmianę i sprawdź log błędów Apache oraz ustawienie AllowOverride.
Zależności między limitami PHP w .htaccess
| Zależność | Zasada | Skutek |
|---|---|---|
| post_max_size a upload_max_filesize | post_max_size musi być większy lub równy | Inaczej plik nie dotrze do skryptu |
| memory_limit a upload_max_filesize | Duży plik wymaga pamięci na obróbkę | Zbyt niski memory_limit przerwie skrypt |
| max_execution_time a rozmiar operacji | Większy plik to dłuższe przetwarzanie | Limit czasu może zakończyć skrypt przed końcem |
| php_value a mod_php | Działa tylko przy PHP jako moduł Apache | Przy PHP-FPM potrzebny jest .user.ini |
| php_flag a uploads | Wyłącza wykonywanie PHP w katalogu | Zmniejsza ryzyko uruchomienia przesłanego skryptu |
| IfModule a nieznany serwer | Chroni przed błędem 500, gdy brak modułu | Blok jest ignorowany, a strona działa dalej |
| AllowOverride a .htaccess | Decyduje, czy plik może zmieniać ustawienia | Bez AllowOverride dyrektywy są odrzucane |
| kolejność dyrektyw | Późniejsze wpisy mogą nadpisać wcześniejsze | Warto trzymać jedną spójną konfigurację |
Jak wdrażać wygenerowany .htaccess bez błędów
- Ustawiaj w podkatalogu — jeśli chcesz zmienić limity tylko dla jednej aplikacji, wklej blok do .htaccess w jej katalogu, a nie do głównego pliku serwera. Ograniczysz wpływ na inne strony i łatwiej będzie cofnąć zmianę. Pamiętaj, że .htaccess działa na katalog i wszystkie podkatalogi, więc zasięg może być większy niż oczekujesz.
- Zmieniaj jedną dyrektywę na raz — po każdej modyfikacji sprawdź działanie strony. Łatwiej wtedy ustalić, która wartość powoduje błąd 500 lub nieoczekiwane zachowanie. Notuj, co zmieniłeś, aby móc wrócić do działającej wersji.
- Nie ufaj ślepo gotowym wartościom — generator nie zna Twojego hostingu. Wartości 256M, 128M czy 64M są tylko przykładem. Dostosuj je do realnego zapotrzebowania skryptu. Lepiej zacząć od wartości mniejszych i zwiększać je tylko wtedy, gdy skrypt naprawdę tego potrzebuje.
- Sprawdź tryb PHP — jeśli hosting używa PHP-FPM, .htaccess może nie działać. W takiej sytuacji poszukaj pliku .user.ini lub ustawień w panelu hostingu. W panelu często znajdziesz przełącznik wersji PHP i informację o trybie.
- Rób kopię przed zmianą — zapisz stary .htaccess lub trzymaj go w repozytorium. W razie błędu 500 szybko przywrócisz poprzednią konfigurację. Dobra praktyka to trzymanie .htaccess razem z konfiguracją aplikacji.
Czego generator nie sprawdzi
- Konfiguracji serwera — narzędzie nie wie, czy Apache pozwala na AllowOverride, jaki moduł PHP jest aktywny i jakie limity narzuca hosting. To wszystko może zmienić działanie wygenerowanego pliku. Generator nie sprawdza też, czy inny plik .htaccess wyżej w drzewie nadpisuje te ustawienia.
- Realnego zużycia pamięci — memory_limit to tylko górna granica. Generator nie mierzy, ile pamięci faktycznie potrzebuje skrypt przy danym pliku, obrazie czy bibliotece. Nie wykryje wycieków pamięci ani błędów w kodzie.
- Zgodności z PHP-FPM — dyrektywy php_value i php_flag są charakterystyczne dla mod_php. Przy PHP-FPM .htaccess zwykle nie zmienia ustawień PHP. Narzędzie nie zamieni automatycznie wygenerowanego bloku na .user.ini.
- Bezpieczeństwa całej aplikacji — wyłączenie PHP w uploads pomaga, ale nie zastępuje walidacji plików, kontroli dostępu i trzymania danych poza katalogiem publicznym. Nie zastąpi też poprawnych uprawnień plików i katalogów.
Najczęstsze pytania
Czy php_value działa zawsze?
Nie. Działa tylko przy PHP jako moduł Apache (mod_php). Przy PHP-FPM użyj pliku .user.ini.
Dlaczego dostaję błąd 500?
Serwer może nie zezwalać na te dyrektywy (AllowOverride). Sprawdź log błędów Apache.
Jak zabezpieczyć uploads inaczej?
Trzymaj pliki użytkowników poza katalogiem publicznym i serwuj je przez skrypt kontrolujący dostęp.
Czy w .htaccess można ustawić memory_limit?
Tak, ale tylko wtedy, gdy PHP działa jako moduł Apache i serwer pozwala na dyrektywy php_value. W innym przypadku użyj pliku .user.ini albo ustawień w panelu hostingu. Sam wpis w .htaccess nie obejdzie limitów narzuconych przez operatora.
Co ustawić najpierw: upload_max_filesize czy post_max_size?
Najpierw ustal docelowy rozmiar pliku w upload_max_filesize, a potem ustaw post_max_size na wartość większą lub równą. Dzięki temu całe żądanie POST zmieści plik i pozostałe dane formularza. Jeśli post_max_size będzie za mały, plik nie dotrze do skryptu.
Czy php_value memory_limit działa na hostingu współdzielonym?
Nie zawsze. Wielu operatorów blokuje zmiany PHP w .htaccess ze względu na bezpieczeństwo i wydajność. Sprawdź dokumentację hostingu lub log błędów Apache, jeśli po zmianie pojawia się błąd 500.
Jak sprawdzić, czy PHP działa jako moduł Apache?
Najprościej przez plik phpinfo lub zapytanie do administratora hostingu. Jeśli w informacjach pojawia się Server API Apache 2.0 Handler, to zwykle mod_php. Przy FPM zobaczysz PHP-FPM albo FPM/FastCGI.
Czy .htaccess może zwiększyć max_execution_time?
Tak, przy mod_php można użyć php_value max_execution_time. Pamiętaj jednak, że hosting może mieć własny limit, którego nie da się obejść z poziomu katalogu. Warto też sprawdzić, czy długie operacje nie są lepiej przeniesione do kolejki.