Skip to content

Kaikki WordPressistä, web-kehityksestä — ja paljon muuta

⚙️ Kuinka korjata "The uploaded file exceeds the upload_max_filesize directive" -virhe php.ini-tiedostossa

⚙️ Kuinka korjata "The uploaded file exceeds the upload_max_filesize directive" -virhe php.ini-tiedostossa

Lataat teeman, lisäosan tai kuvan WordPressin mediakirjastoon ja näet punaisen virheilmoituksen: "The uploaded file exceeds the upload_max_filesize directive in php.ini." Tiedosto on 10 megatavua, eikä WordPress hyväksy sitä. Tuttu tilanne jokaiselle, joka ylläpitää verkkosivustoa.

Ongelma ei ole WordPressissä eikä tiedostossasi. Hosting-palveluntarjoajat rajoittavat ladattavien tiedostojen kokoa PHP-tasolla, ja oletusarvoinen 2 megatavun raja ei ole muuttunut vuosiin. Voit nostaa sen viidessä minuutissa millä tahansa alla olevista viidestä menetelmästä, yksinkertaisimmasta edistyneempään.

💡 Pikaopas:

  • Nosta rajaa wp-config.php-tiedoston kautta yhdellä ini_set-kutsulla, toimii useimmilla palveluntarjoajilla
  • Muuta asetuksia cPanelissa MultiPHP INI Editorin kautta, jos palveluntarjoajasi käyttää cPanelia
  • Luo tai muokkaa php.ini-tiedostoa FTP:n kautta, menetelmä joka toimii hallintapaneelista riippumatta
  • Lisää direktiivejä.htaccess-tiedostoon, kun sinulla ei ole pääsyä php.ini-tiedostoon
  • Viimeisenä keinona lisää @ini_set lapsiteeman functions.php-tiedostoon

Mistä upload_max_filesize-raja tulee

upload_max_filesize-direktiivi sijaitsee php.ini-asetustiedostossa, joka on palvelimesi tärkein PHP-asetustiedosto. Se määrittää yksittäisen ladattavan tiedoston enimmäiskoon. Oletusarvo on 2 megatavua, mikä riittää pienille kuville, mutta WordPress-teema tai video ei mahdu tuohon rajaan.

Kaksi muuta direktiiviä toimii sen rinnalla: post_max_size (POST-pyynnön kokonaiskoko, oletus 8 Mt) ja memory_limit (skriptin käytettävissä oleva muisti, oletus 128 Mt). Kaikki kolme liittyvät toisiinsa: jos nostat upload_max_filesize-arvoa, varmista, ettei post_max_size ole uutta arvoa pienempi, muuten rajoitus pysyy aiemmalla tasolla.

Voit tarkistaa nykyiset rajat suoraan WordPressin hallintapaneelista: siirry kohtaan Media → Lisää uusi ja katso latausalueen alapuolella olevaa riviä, joka näyttää enimmäiskoon. Vaihtoehtoisesti asenna PHP Info -lisäosa ja etsi kyseiset direktiivit phpinfo()-tulosteesta.

1. Nosta rajaa wp-config.php-tiedoston kautta

Nopein menetelmä, joka toimii useimmilla jaetuilla hosting-palveluilla. wp-config.php-tiedosto sijaitsee sivuston juurikansiossa ja latautuu ennen minkään WordPress-koodin suorittamista, joten siinä olevat ini_set-direktiivit menevät muiden edelle.

Yhdistä palvelimelle FTP-asiakasohjelmalla (FileZilla, ilmainen ja luotettava vaihtoehto) tai avaa tiedostonhallinta hosting-palvelusi hallintapaneelissa. Etsi wp-config.php juurikansiosta (yleensä public_html):

wp-config.php-koodi korotetulla muistirajalla

Lisää seuraavat rivit tiedoston loppuun, ennen kommenttia /* That's all, stop editing! */:

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');

Tallenna tiedosto ja päivitä WordPressin mediakirjaston sivu. Latausrajan pitäisi muuttua 64 megatavuun. Jos luku ei ole muuttunut, hosting-palveluntarjoaja on estänyt ini_set-funktion, joten siirry seuraavaan menetelmään.

2. Muuta asetuksia MultiPHP INI Editorin kautta cPanelissa

Jos palveluntarjoajasi käyttää cPanelia, sisäänrakennettu MultiPHP INI Editor antaa sinun muuttaa PHP-asetuksia ilman tiedostojen manuaalista muokkaamista. Se soveltaa arvot automaattisesti valittuun sivustoon ja korvaa hosting-oletusarvot.

Kirjaudu cPaneliin ja etsi Software → MultiPHP INI Editor -osio:

MultiPHP INI -editori cPanelissa PHP-asetuksineen

Valitse haluamasi sivusto sivun yläreunan pudotusvalikosta. Vieritä alas upload_max_filesize-direktiivin kohdalle ja syötä uusi arvo (esimerkiksi 64M). Etsi sen alta post_max_size ja aseta se hieman korkeammaksi, 80M. Klikkaa Apply. Muutokset tulevat voimaan välittömästi.

Tämä menetelmä on ensimmäistä parempi: cPanel hoitaa syntaksin automaattisesti, eivätkä asetukset nollaudu WordPress-päivitysten yhteydessä.

3. Muokkaa php.ini-tiedostoa FTP:n kautta

Jos sinulla ei ole pääsyä cPaneliin tai palveluntarjoajasi ei tue MultiPHP INI Editoria, työskentele suoraan php.ini-tiedoston kanssa. Se hallitsee kaikkia PHP-asetuksia, ja sen muokkaaminen on luotettavin tapa nostaa rajoja.

Yhdistä palvelimelle FTP:n kautta ja siirry sivuston juurikansioon. Etsi php.ini-tiedosto. Jos sitä ei ole (käyttäjän php.ini puuttuu usein jaetulta hostingilta), luo uusi tekstitiedosto tällä nimellä:

php.ini-tiedoston sisältö upload_max_filesize-asetuksineen

Lisää tiedostoon seuraavat direktiivit:

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

Tallenna tiedosto. Jotta muutokset tulevat voimaan, jotkin hosting-palveluntarjoajat vaativat suPHP-direktiivin .htaccess-tiedostossa. Lisää tämä lohko .htaccess-tiedostoon:

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

Korvaa yourusername omalla hosting-tilisi käyttäjätunnuksella. Jos sivusto kaatuu virheeseen tämän lohkon lisäämisen jälkeen, poista se: palvelimesi käyttää CGI:tä eikä vaadi suPHP:ta.

Paikallisilla palvelimilla php.ini-tiedoston polku riippuu alustasta: XAMPP (Windows): C:\xampp\php\php.ini; MAMP (macOS): /Applications/MAMP/conf/php/php.ini; LAMP (Linux): /etc/php/version/apache2/php.ini. Muokkauksen jälkeen käynnistä verkkopalvelin uudelleen.

4. Lisää direktiivejä.htaccess-tiedostoon

Kun hosting-palveluntarjoaja on estänyt pääsyn php.ini-tiedostoon eikä ini_set toimi, viimeinen puolustuslinja palvelintasolla on .htaccess-tiedosto. Sen avulla voit asettaa PHP-asetuksia tietylle sivustokansiolle php_value-direktiiveillä.

Yhdistä FTP:llä ja etsi .htaccess juurikansiosta. Lataa varmuuskopio tietokoneellesi (pakollinen!). Lisää sitten seuraavat rivit tiedoston loppuun:

php_value-direktiivit .htaccess-tiedostossa latausrajan nostamiseksi
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

Tallenna .htaccess ja päivitä sivusto. Jos sivuston tilalle ilmestyy 500 Internal Server Error, palvelimesi käyttää CGI:tä, eikä .htaccess-tiedoston php_value-direktiiviä tueta. Poista lisätyt rivit palauttaaksesi sivuston ja käytä menetelmää 3 (php.ini-tiedoston luominen).

Käsittelimme 500-virheen ja sen muunnelman 502 yksityiskohtaisesti WordPressin palvelinvirheiden korjausoppaassamme.

5. Lisää @ini_set teeman functions.php-tiedostoon

Tämä menetelmä on tilanteisiin, joissa kaikki aiemmat menetelmät eivät ole käytettävissä tai haluat säilyttää asetukset teeman repositoriossa. Lisää koodi lapsiteemasi functions.php-tiedostoon, joka suoritetaan jokaisen pyynnön yhteydessä ja ohittaa rajoitukset lennossa.

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');

Sijoita koodi functions.php-tiedoston loppuun, mutta ennen päättävää ?>-merkintää (jos sellainen on). Käytä lapsiteemaa: kun pääteema päivittyy, pääteeman functions.php-tiedostoon tehdyt muokkaukset nollautuvat, kun taas lapsiteema säilyy päivityksissä ilman menetyksiä.

Koodin lisäämisen jälkeen tarkista rajoitus WordPressin mediakirjastossa. Huomaa, että joillakin palvelimilla ini_set-funktion käyttö upload_max_filesize-arvolle on estetty PHP-tasolla (PHP_INI_SYSTEM-direktiivi ei salli arvon muuttamista ajonaikaisesti). Siinä tapauksessa @ini_set ohitetaan hiljaisesti, ja tarvitset menetelmää 3 tai 4.

Miksi rajoitus ei muuttunut: diagnostiikka

Noudatit kaikkia ohjeita, mutta rajoitus pysyi samana? Käy läpi tämä tarkistuslista:

  • post_max_size on pienempi kuin uusi upload_max_filesize. Tämä on yleisin syy: post_max_size-arvon on oltava vähintään yhtä suuri ja mieluiten 20-30% suurempi kuin upload_max_filesize: PHP-dokumentaatio edellyttää nimenomaisesti, että post_max_sizeupload_max_filesize. Useiden tiedostojen erälataukset ja lomakekentät lasketaan mukaan post_max_size-arvoon.
  • Tiedosto luotiin väärään kansioon. PHP etsii php.ini-tiedostoa skriptin hakemistosta ja siirtyy sitten ylöspäin puurakenteessa palvelimen juureen. Sijoita php.ini sivuston juureen (public_html), älä alikansioon.
  • PHP-välimuisti (OPcache) tallentaa vanhan konfiguraation. Jotkin palvelimet välimuistittavat php.ini-tiedoston. Käynnistä PHP uudelleen hallintapaneelin kautta tai odota 5-10 minuuttia välimuistin vanhenemista.
  • Palvelin käyttää CGI/FastCGI:tä ja jättää .htaccess-tiedoston huomiotta. Vaihda lähestymistapaa: käytä php.ini-tiedostoa (menetelmä 3) tai user.ini-tiedostoa FastCGI:lle.
  • Hosting-palveluntarjoaja on lukinnut rajoituksen. Erittäin halvoissa paketeissa latausrajoitus on kiinteä, eikä sitä voi muuttaa millään menetelmällä paitsi päivittämällä pakettia.

Jos mikään näistä kohdista ei auttanut, ota yhteyttä hosting-palveluntarjoajan tukeen. Ilmoita verkkotunnuksesi, menetelmä, jota käytit rajoituksen muuttamiseen, ja pyydä heitä tarkistamaan, salliiko pakettisi upload_max_filesize-arvon ohittamisen.

Video-opastus

Katso vaiheittainen prosessi tämän virheen korjaamiseksi diagnostiikasta lopulliseen varmennukseen tältä videolta:

⁉️🤔 Usein kysytyt kysymykset

Mikä upload_max_filesize-arvo minun kannattaa valita?

Useimmille sivustoille 64 Mt on riittävä, ja se kattaa teemojen, lisäosien ja korkearesoluutioisten kuvien lataukset. Jos käsittelet videotiedostoja tai suuria ZIP-arkistoja hallintapaneelin kautta, aseta se 128-256 Mt:iin. Älä tavoittele gigatavuja ilman syytä: mitä korkeampi raja, sitä enemmän muistia palvelin varaa jokaiselle latauspyynnölle.

Voinko ladata tiedoston rajoituksen ohi?

Kyllä, FTP:n kautta. FTP-asiakas yhdistää suoraan palvelimeen eikä kulje PHP-käsittelijän läpi, joten upload_max_filesize-rajoitukset eivät koske sitä. Lataa tiedosto wp-content/uploads-kansioon FTP:llä ja rekisteröi se sitten WordPressin mediakirjastoon Add From Server -lisäosalla.

Mitä eroa on upload_max_filesizella ja post_max_sizella?

upload_max_filesize on yksittäisen tiedoston enimmäiskoko latauksessa. post_max_size on koko POST-pyynnön kokonaiskoko, mukaan lukien kaikki tiedostot, lomakekentät ja palveluotsikot. Jos lataat kolme 20 Mt:n tiedostoa, upload_max_filesize-arvon tulee olla ≥ 20 Mt, kun taas post_max_size-arvon tulee olla ≥ 60 Mt plus puskuri lomakkeelle. Siksi post_max_size asetetaan aina suuremmaksi kuin upload_max_filesize.

Miksi rajoitukset palautuvat WordPress-päivitysten jälkeen?

WordPress ei koske PHP-palvelinasetuksiin päivitysten aikana, mutta jos muokkasit wp-config.php-tiedostoa tai pääteeman functions.php-tiedostoa, ydin- tai teemapäivitykset ovat saattaneet korvata nuo tiedostot. Pidä mukautetut PHP-asetukset aina php.ini-tiedostossa, cPanelin MultiPHP INI Editorissa tai lapsiteemassa: nämä sijainnit eivät ole alttiita päivityksille.

Täytyykö palvelin käynnistää uudelleen php.ini-muutosten jälkeen?

Jaetuille hosting-palveluille ja cPanelille ei tarvitse: muutokset astuvat voimaan automaattisesti muutamassa minuutissa. VPS- ja dedikoiduille palvelimille, joissa on PHP-FPM, käynnistä palvelu uudelleen: sudo systemctl restart php-fpm (tai php8.3-fpm, versiosta riippuen). Apache mod_php:llä poimii muutokset yleensä ilman uudelleenkäynnistystä.

Mitä tehdä, jos raja ei vieläkään nouse

Edellä mainitut viisi menetelmää kattavat käytännössä minkä tahansa hosting-skenaarion. Perustason wp-config.php-tiedostosta lapsiteeman functions.php-tiedostoon olet käynyt läpi koko ketjun. Jos rehellisesti jokaisen vaiheen suorittamisen ja diagnostiikan ajamisen jälkeen raja pysyy muuttumattomana, syynä on hosting-palveluntarjoajan tiukka käytäntö, etkä voi kiertää sitä vaihtamatta palvelupakettia tai palveluntarjoajaa.

Ota yhteyttä tukeen ja kysy suoraan, sallitaanko upload_max_filesize-arvon ohittaminen palvelupaketissasi. Vastaus "ei" on syy harkita siirtymistä VPS:ään tai joustavampaan jaettuun palvelupakettiin, jossa hallitset PHP-asetuksia ilman huolta palvelimen naapureista. Sillä välin lataa suuret tiedostot FTP:n kautta: siellä ei ole kokorajoituksia, ja Add From Server liittää ne mediakirjastoon.