Skip to content

Kõik WordPressist, veebiarendusest — ja mitte ainult

⚙️ Kuidas parandada tõrge "The uploaded file exceeds the upload_max_filesize directive" failis php.ini

⚙️ Kuidas parandada tõrge "The uploaded file exceeds the upload_max_filesize directive" failis php.ini

Laed üles teema, pluginat või pilti WordPressi meediateeki ja näed punast rida: „The uploaded file exceeds the upload_max_filesize directive in php.ini." Fail on 10 megabaiti ja WordPress ei võta seda vastu. Tuttav olukord kõigile, kes veebisaiti haldavad.

Probleem ei ole WordPressis ega teie failis. Majutusteenuse pakkujad piiravad üleslaaditavate failide suurust PHP tasemel ja standardne 2-megabaidine piirang pole aastaid muutunud. Saate seda viie minutiga suurendada, kasutades ühte viiest allpool kirjeldatud meetodist, alates lihtsaimast kuni keerukamani.

💡 Kiirülevaade:

  • Suurendage piirangut faili wp-config.php kaudu ühe ini_set käsuga, töötab enamikul majutusteenustel
  • Muutke seadeid cPanelis MultiPHP INI Editori kaudu, kui teie majutusteenus kasutab cPanelit
  • Looge või muutke php.ini FTP kaudu, meetod, mis töötab olenemata juhtpaneelist
  • Lisage.htaccess faili direktiive, kui teil puudub juurdepääs php.ini failile
  • Viimase abinõuna lisage oma alamteema functions.php faili @ini_set

Kust upload_max_filesize piirang pärineb

upload_max_filesize direktiiv asub php.ini konfiguratsioonifailis, mis on teie serveri peamine PHP seadete fail. See määrab ühe üleslaaditava faili maksimaalse suuruse. Vaikeväärtus on 2 megabaiti, mis on piisav väikeste piltide jaoks, kuid WordPressi teema või video ei mahu sellesse piirangusse.

Kaks teist direktiivi töötavad sellega koos: post_max_size (POST-päringu kogumaht, vaikimisi 8 MB) ja memory_limit (skriptile saadaolev mälu, vaikimisi 128 MB). Kõik kolm on omavahel seotud: kui tõstate upload_max_filesize, veenduge, et post_max_size ei oleks uuest väärtusest väiksem, vastasel juhul jääb piirang eelmisele tasemele.

Saate praeguseid piiranguid kontrollida otse WordPressi administraatori paneelist: minge Meedia → Lisa uus ja vaadake üleslaadimisala all olevat rida, mis näitab maksimaalset suurust. Teise võimalusena installige PHP Info plugin ja leidke vastavad direktiivid phpinfo() väljundist.

1. Suurendage piirangut wp-config.php kaudu

Kiireim meetod, mis töötab enamikul jagatud majutusteenustel. Fail wp-config.php asub saidi juurkaustas ja laaditakse enne mis tahes WordPressi koodi käivitamist, seega on selles olevad ini_set direktiivid prioriteetsed.

Looge serveriga ühendus FTP-kliendi (FileZilla, tasuta ja usaldusväärne valik) kaudu või avage failihaldur oma majutuse juhtpaneelil. Leidke juurkaustast (tavaliselt public_html) wp-config.php:

wp-config.php kood suurendatud mälulimiidiga

Lisage faili lõppu, enne kommentaari /* That's all, stop editing! */, järgmised read:

1@ini_set('upload_max_filesize', '64M');
2@ini_set('post_max_size', '80M');
3@ini_set('memory_limit', '256M');
4@ini_set('max_execution_time', '300');

Salvestage fail ja värskendage WordPressi meediateegi lehte. Üleslaadimise limiit peaks muutuma 64 megabaidiks. Kui number ei ole muutunud, on majutusteenuse pakkuja blokeerinud ini_set, seega liikuge järgmise meetodi juurde.

2. Muutke seadeid cPanelis MultiPHP INI Editori kaudu

Kui teie majutusteenus kasutab cPanelit, võimaldab sisseehitatud MultiPHP INI Editor muuta PHP seadeid ilma faile käsitsi muutmata. See rakendab väärtused automaatselt valitud saidile ja kirjutab üle majutuse vaikeseaded.

Logige cPanelisse sisse ja leidke jaotis Tarkvara → MultiPHP INI Editor:

MultiPHP INI redaktor cPanelis PHP seadetega

Valige lehe ülaosas rippmenüüst soovitud sait. Kerige alla direktiivini upload_max_filesize ja sisestage uus väärtus (näiteks 64M). Selle all leidke post_max_size ja määrake see veidi suuremaks, 80M. Klõpsake Rakenda. Muudatused jõustuvad kohe.

See meetod on eelistatud esimesele: cPanel haldab süntaksit automaatselt ja seaded ei lähtestu pärast WordPressi uuendusi.

3. Muutke php.ini FTP kaudu

Kui teil puudub juurdepääs cPanelile või teie majutusteenus ei toeta MultiPHP INI Editorit, töötage otse php.ini failiga. See juhib kõiki PHP seadeid ja selle muutmine on kõige usaldusväärsem viis piirangute tõstmiseks.

Looge serveriga FTP kaudu ühendus ja navigeerige saidi juurkausta. Leidke php.ini fail. Kui seda ei eksisteeri (kasutaja php.ini puudub sageli jagatud majutusel), looge selle nimega uus tekstifail:

php.ini faili sisu upload_max_filesize seadetega

Lisage faili järgmised direktiivid:

1upload_max_filesize = 64M
2post_max_size = 80M
3memory_limit = 256M
4file_uploads = On
5max_execution_time = 300
6max_input_time = 300

Salvestage fail. Muudatuste jõustumiseks nõuavad mõned majutusteenuse pakkujad suPHP direktiivi .htaccess failis. Lisage see plokk faili .htaccess:

1<IfModule mod_suphp.c>
2suPHP_ConfigPath /home/yourusername/public_html
3</IfModule>

Asenda yourusername oma majutuskonto kasutajanimega. Kui sait pärast selle ploki lisamist veateatega kokku jookseb, eemalda see: sinu server töötab CGI peal ega vaja suPHP-d.

Kohalikes serverites sõltub php.ini asukoht platvormist: XAMPP (Windows): C:\xampp\php\php.ini; MAMP (macOS): /Applications/MAMP/conf/php/php.ini; LAMP (Linux): /etc/php/version/apache2/php.ini. Pärast muutmist taaskäivita veebiserver.

4. Lisa direktiivid.htaccess faili

Kui majutusteenuse pakkuja on juurdepääsu php.ini failile blokeerinud ja ini_set ei tööta, on viimane kaitseliin serveri tasemel .htaccess fail. See võimaldab määrata PHP seadeid konkreetse saidi kaustale, kasutades php_value direktiive.

Ühendu FTP kaudu ja leia .htaccess juurkaustast. Lae varukoopia oma arvutisse (kohustuslik!). Seejärel lisa faili lõppu järgmised read:

php_value direktiivid .htaccess failis üleslaadimislimiidi suurendamiseks
1php_value upload_max_filesize 64M
2php_value post_max_size 80M
3php_value memory_limit 256M
4php_value max_execution_time 300
5php_value max_input_time 300

Salvesta .htaccess ja värskenda saiti. Kui saidi asemel ilmub 500 Internal Server Error, töötab sinu server CGI peal ja .htaccess failis olev php_value direktiiv ei ole toetatud. Kustuta lisatud read saidi taastamiseks ja kasuta meetodit 3 (php.ini loomine).

500 veast ja selle variandist 502 rääkisime üksikasjalikult meie WordPressi serverivigade parandamise juhendis.

5. Lisa @ini_set oma teema functions.php faili

See meetod on olukordadeks, kui kõik eelnevad meetodid pole saadaval või soovid seadeid hoida teema repositooriumis. Lisa kood oma alamteema functions.php faili, mis käivitatakse iga päringuga ja muudab limiite käigu pealt.

1@ini_set('upload_max_filesize', '64M');
2@ini_set('post_max_size', '80M');
3@ini_set('memory_limit', '256M');
4@ini_set('max_execution_time', '300');

Paiguta kood functions.php lõppu, kuid enne sulgevat ?> (kui see on olemas). Kasuta alamteemat: kui peateema uueneb, lähtestatakse peateema functions.php muudatused, samas kui alamteema säilib uuendustest ilma kadudeta.

Pärast koodi lisamist kontrolli limiiti WordPressi meediateegis. Pane tähele, et mõnel hostil on ini_set funktsioon upload_max_filesize jaoks PHP tasemel blokeeritud (PHP_INI_SYSTEM direktiiv ei luba väärtust käitusajal muuta). Sel juhul ignoreeritakse @ini_set vaikselt ja sa pead kasutama meetodit 3 või 4.

Miks limiit ei muutunud: diagnostika

Järgisid kõiki juhiseid, kuid limiit jäi samaks? Vaata see kontrollnimekiri läbi:

  • post_max_size on väiksem kui uus upload_max_filesize. See on kõige levinum põhjus: post_max_size peab olema vähemalt võrdne ja soovitavalt 20-30% suurem kui upload_max_filesize: PHP dokumentatsioon nõuab selgesõnaliselt, et post_max_sizeupload_max_filesize. Mitme faili pakettüleslaadimine ja vormiväljad lähevad post_max_size arvestusse.
  • Fail loodi valesse kausta. PHP otsib php.ini skripti kataloogist, seejärel liigub mööda puud ülespoole serveri juureni. Paiguta php.ini saidi juurkausta (public_html), mitte alamkausta.
  • PHP vahemälu (OPcache) salvestab vana konfiguratsiooni. Mõned serverid puhverdavad php.ini. Taaskäivita PHP majutuspaneeli kaudu või oota 5-10 minutit, kuni vahemälu aegub.
  • Server töötab CGI/FastCGI peal ja ignoreerib .htaccess faili. Muuda oma lähenemist: kasuta php.ini (meetod 3) või user.ini FastCGI puhul.
  • Majutusteenuse pakkuja on limiidi lukustanud. Üliodavatel pakettidel on üleslaadimislimiit fikseeritud ja seda ei saa ühegi meetodiga muuta, välja arvatud paketi uuendamine.

Kui ükski neist punktidest ei aidanud, võta ühendust majutusteenuse toega. Esita oma domeen, meetod, mida limiidi muutmiseks kasutasid, ja palu neil kontrollida, kas upload_max_filesize ülekirjutamine on sinu paketil lubatud.

Videoõpetus

Vaata selle vea samm-sammulist parandamise protsessi diagnostikast kuni lõpliku kontrollimiseni sellest videost:

⁉️🤔 Korduma kippuvad küsimused

Millise upload_max_filesize väärtuse peaksin valima?

Enamiku saitide jaoks on 64 MB piisav, kattes teemade, pluginatega ja kõrge resolutsiooniga piltide üleslaadimise. Kui töötate videofailide või suurte ZIP-arhiividega läbi administraatori paneeli, seadke see 128-256 MB peale. Ärge ajage ilmaasjata gigabaite taga: mida kõrgem on limiit, seda rohkem mälu server iga üleslaadimispäringu jaoks reserveerib.

Kas ma saan faili üles laadida limiidist mööda minnes?

Jah, FTP kaudu. FTP-klient ühendub otse serveriga ega läbi PHP käsitlejat, seega upload_max_filesize piirangud sellele ei kehti. Laadige fail FTP kaudu üles kataloogi wp-content/uploads, seejärel registreerige see WordPressi meediateeki, kasutades pluginat Add From Server.

Mis vahe on upload_max_filesize ja post_max_size vahel?

upload_max_filesize on ühe faili maksimaalne suurus üleslaadimisel. post_max_size on kogu POST-päringu kogumaht, sealhulgas kõik failid, vormiväljad ja teenusepäised. Kui laadite üles kolm 20 MB faili, peaks upload_max_filesize olema ≥ 20 MB, samas kui post_max_size peaks olema ≥ 60 MB pluss puhver vormi jaoks. Seepärast seatakse post_max_size alati kõrgemaks kui upload_max_filesize.

Miks limiidid pärast WordPressi uuendusi lähtestuvad?

WordPress ei puuduta uuenduste ajal PHP serveri seadeid, kuid kui redigeerisite wp-config.php või peateema functions.php faili, võisid tuuma- või teemauuendused need failid üle kirjutada. Hoidke kohandatud PHP seadeid alati failis php.ini, cPaneli MultiPHP INI Editoris või alamteemas: neid asukohti uuendused ei mõjuta.

Kas ma pean pärast php.ini muutmist serveri taaskäivitama?

Jagatud majutuse ja cPaneli puhul ei: muudatused rakenduvad automaatselt mõne minuti jooksul. VPS-i ja dedikeeritud serverite puhul koos PHP-FPM-iga taaskäivitage teenus: sudo systemctl restart php-fpm (või php8.3-fpm, sõltuvalt versioonist). Apache koos mod_php-ga võtab muudatused tavaliselt kasutusele ilma taaskäivituseta.

Mida teha, kui limiit ikka ei suurene

Viis ülaltoodud meetodit katavad praktiliselt iga majutusstsenaariumi. Alates lihtsast wp-config.php-st kuni alamteema functions.php-ni olete läbinud kogu ahela. Kui pärast iga sammu ausat läbimist ja diagnostika käivitamist jääb limiit muutumatuks, on põhjuseks range majutusteenuse pakkuja poliitika ja te ei saa sellest mööda ilma paketti või majutajat vahetamata.

Võtke ühendust toega ja küsige otse, kas upload_max_filesize ülekirjutamine on teie paketis lubatud. Vastus „ei" on põhjus kaaluda kolimist VPS-ile või paindlikumale jagatud paketile, kus saate PHP seadeid kontrollida, arvestamata serverinaabreid. Seniks laadige suured failid üles FTP kaudu: seal suurusepiiranguid pole ja Add From Server ühendab need meediateeki.