Kako povećati ograničenje veličine datoteke za PHP
Ako imate web-aplikaciju koja učitava datoteke na poslužitelj putem PHP skripte, možda ste primijetili da po defaultu ne možete prenijeti užasno velike datoteke. Evo kako to promijeniti.
Razlog zbog kojeg je ograničenje zadano nisko postavljeno je zbog stabilnosti i sigurnosnih razloga - zlonamjerna skripta ili napadač mogu pokušati izvršiti DoS poslužitelj s velikim prijenosom datoteka i privremeno zatvoriti vašu aplikaciju.
Da biste promijenili vrijednosti, trebat ćete urediti datoteku php.ini, koja se obično nalazi na tom putu datoteke:
/etc/php.ini
Evo postavki koje želite promijeniti:
post_max_size
Ova postavka kontrolira veličinu HTTP posta i mora biti postavljena veća od postavke upload_max_filesize.
upload_max_filesize
Ova vrijednost postavlja maksimalnu veličinu datoteke za prijenos.
memory_limit
Morat ćete se uvjeriti da je ograničenje memorije skripte postavljeno na pristojnu veličinu, vjerojatno veću od bilo koje druge dvije postavke.
Postavljanje varijabli
Vrijednosti možete postaviti pomoću brojčane vrijednosti nakon koje slijedi M za iznos MB koji želite dodijeliti za svaku varijablu. Na primjer, da biste omogućili prijenos 20 MB datoteka, upotrijebili biste nešto slično:
memory_limit = 64M
upload_max_filesize = 20M
post_max_size = 25M
Morat ćete ponovno pokrenuti svoj Apache poslužitelj nakon što izvršite ovu promjenu, pomoću ove naredbe:
/etc/init.d/httpd restart
Postavljanje veličine prijenosa po aplikaciji
Ovu promjenu postavke možete napraviti za određenu web-aplikaciju stavljajući je u datoteku .htaccess, u direktorij aplikacije. Imajte na umu da će to raditi samo ako je vaš poslužitelj omogućio poništavanje za vaš virtualni host ili poslužitelj.
Na primjer, u datoteku možete staviti sljedeće:
php_value memory_limit = 64M
php_value upload_max_filesize = 20M
php_value post_max_size = 25M
Nakon što spremite datoteku, promjene treba primijeniti.