Luku 14 · 14.6
Virheet PHP-päivityksen jälkeen ja virhelokin löytäminen
Olet nostanut PHP-versiota ja nyt verkkosivusi on valkoinen, näyttää virheilmoituksen tai osa siitä ei enää toimi. Tämä johtuu lähes aina laajennuksesta, teemasta tai omasta koodista, joka ei sovi uuteen versioon. Ei hätää: palautat vanhan version minuutissa ja sen jälkeen voit rauhassa selvittää mikä on vialla.
Vaihe 1: palauta vanha versio
Siirry kohtaan Select PHP version, valitse jälleen versio, joka sinulla oli aiemmin ja klikkaa Apply (katso PHP-version valinta (Select PHP version)). Verkkosivustosi toimii heti taas kuten ennen. Jos muokkasit laajennuksia tai asetuksia uudessa versiossa, ne säilyvät seuraavaa yritystä varten.
Vaihe 2: etsi virheilmoitus virhelokista
PHP kirjoittaa virheet verkkotunnuksesi virhelokiin. Siitä näet tarkalleen mikä tiedosto ja mikä rivi aiheuttaa ongelman.
- Klikkaa DirectAdminissa kohdassa System Info & Files kohtaa Site summary & logs.
- Klikkaa verkkotunnuksesi kohdalla Error log.
- Katso viimeisiä rivejä, alimmaisena. Etsi rivejä, joissa lukee PHP Fatal error, PHP Parse error tai PHP Warning (1).

Lisää lokeista voit lukea artikkelissa Site summary & logs: virhelogi ja käyttölogi.
Vaihe 3: ymmärrä ilmoitus
Ilmoituksessa näkyy tiedoston polku. Siitä näet yleensä mikä laajennus tai teema on aiheuttaja. Muutama esimerkki:
| Näet ilmoituksessa | Merkitys |
|---|---|
| .../wp-content/plugins/laajennuksen-nimi/... | Tämä laajennus ei toimi uudessa versiossa. Päivitä se tai etsi korvaava, jos sitä ei enää ylläpidetä. |
| .../wp-content/themes/teeman-nimi/... | Teemasi on liian vanha. Päivitä se tai pyydä tekijää tekemään päivitys. |
| Call to undefined function mysql_connect() | Hyvin vanha koodi, joka käyttää vielä ennen PHP 7:ää käytössä olleita funktioita. Se täytyy kirjoittaa uudelleen. |
| Call to undefined function jonkin muun funktion nimen kanssa | Usein puuttuu laajennus (extension). Katso mikä laajennus kuuluu kyseiseen funktioon ja ota se käyttöön (katso PHP-laajennusten käyttöönotto ja poistaminen käytöstä). |
| Allowed memory size of ... bytes exhausted | Skriptillä on liian vähän muistia käytössä. Nosta arvoa memory_limit (katso PHP-asetukset: upload_max_filesize, memory_limit ja max_execution_time). |
| Maximum execution time of ... seconds exceeded | Skripti kesti liian kauan. Nosta arvoa max_execution_time tai selvitä miksi se on näin hidas. |
Vaihe 4: päivitä ja yritä uudelleen
- Tee varmuuskopio (katso Backup and Restore: oman varmuuskopion tekeminen DirectAdminissa).
- Päivitä WordPress (tai muu ohjelmistosi), teemasi ja kaikki laajennuksesi, kun vanha PHP-versio on vielä käytössä.
- Poista laajennukset, joita et käytä.
- Ota uusi PHP-versio uudelleen käyttöön ja testaa verkkosivustoasi uudelleen. Tarkista myös virheloki uudelleen.
Vinkki: Haluatko testata ensin ilman, että vierailijat kärsivät siitä? Tee Installatronilla kopio sivustostasi alitunnukseen (katso Kloonaaminen ja testiympäristön (staging) luominen) ja aseta vain se kansio uuteen versioon .htaccess-tiedoston avulla (katso PHP-asetukset kansiokohtaisesti ja .htaccess-tiedoston kautta).
Virheiden näyttäminen väliaikaisesti sivulla
Näetkö vain valkoisen ruudun eikä virhelokissa ole mitään käyttökelpoista? Silloin voit näyttää virheet väliaikaisesti itse sivulla. Mene kohtaan Select PHP version, välilehdelle Options ja laita valintamerkki kohtaan display_errors. Avaa sivu uudelleen: nyt näet virheilmoituksen. Poista display_errors heti sen jälkeen käytöstä, sillä tällainen ilmoitus voi paljastaa tietoa verkkosivustostasi kaikille.
Jos käytät WordPressiä, se onnistuu myös näillä riveillä tiedostossa wp-config.php, rivin That's all, stop editing! yläpuolella: define('WP_DEBUG', true); ja define('WP_DEBUG_LOG', true);. WordPress kirjoittaa virheet tällöin tiedostoon wp-content/debug.log. Poista ne jälkeenpäin tai aseta arvoksi false.
Haluatko mieluummin, että asia ratkaistaan puolestasi?
Eikö onnistu tai onko verkkosivustoasi ei ole päivitetty vuosiin? PHP-päivityksellä teemme verkkosivustostasi yhteensopivan ajantasaisen PHP-version kanssa kiinteään hintaan. Jos se ei onnistu, saat rahasi takaisin.
