1. Home
  2. Tehniline
  3. PHP
  4. Kuidas testida ja uuendada aegunud PHP versiooniga Virtuaalservereid?
  1. Home
  2. Tehniline
  3. Kuidas testida ja uuendada aegunud PHP versiooniga Virtuaalservereid?

Kuidas testida ja uuendada aegunud PHP versiooniga Virtuaalservereid?

Kui mõnes sinu Virtuaalserveris on kasutusel aegunud PHP versioone, tekib Minu Zone haldusliidesesse punane kast hoiatusega “Teil on kasutusel aegunud PHP versioon(e)”. Kui seda punast hoiatuskasti ei ole, siis on kasutusel ainult värksed versioonid.

Punasele hoiatuskastile klikkides avaneb ülevaade kõikidest aegunud PHP versioonidega Virtuaalserveritest ja nende alamdomeenidest. Ülevaateaken pakub ka mugava võimaluse PHP versioonide koheseks uuendamiseks ja testimiseks:

Kuna versioonivahetuse jõustumine võtab kuni 3 minutit ning probleemide korral näevad neid kõik veebi külastajad soovitame vanemate versioonide puhul alustada testimisest: klõpsates klõpsa sinist luubiga nuppu PHP 5.6 saad testida nii, et uuemat versiooni kasutatakse vaid sinu brauseris, teiste veebilehe külastajate jaoks midagi ei muutu.

Vaata videost miks on oluline versiooni uuendada ja kuidas testimine toimub:

Minimaalne PHP versioon, mida Zone lubab sul endale valida ongi PHP 5.6. Kuid arvesta, et ka see on aegunud – selles turvaauke enam arendaja poolt ei parandata, kuigi tehniliselt on võimalik seda veel toetada. Soovitav on uuendada PHP versioonile 7.3, kuna ka PHP 5.6 on aegunud ja ei saa enam turvauuendusi.

Kaasaegsete veebirakenduste nagu WordPress puhul soovitame proovida üleminekut PHP versioonile 7.3 või 7.4 tehes eelnevalt WP ja pluginate-teemade uuenduse.

Uuendamata veebirakenduste puhul võib ülemineks PHP 7.x versioonile olla keeruline, sest erinevused 5.6 ja 7.x vahel on suured.

Sagedasemad vead versioonivahetusel

Täpitähtede asemel küsimärgid

Uma leht pärast versioonivahetust. Seadistuse tulemus http://vana.umaleht.ee/

PHP 5.6 lisab lehtedele vaikimisi UTF-8 tähekodeeringu kasutamisele viitava päise, vanemaid kodeeringuid kasutavatel lehtedel tuleb see eemaldada ja jätta kodeeringu tuvastamine brauserile.

Lihtsaim viis selleks on lisada veebi juurkataloogi htdocs fail .user.ini seadistusega:

default_charset = ''

Veateade Fatal error […]

Veebilehte ei kuvata ning lehe alguses on teade, näiteks:

Fatal error: Call to undefined function session_register() in [...]
Fatal error: Call to undefined function sqlite_open() in [...]
Fatal error: Call to undefined function wp_script_add_data() in [...]
Fatal error: Call-time pass-by-reference has been removed in [...]

Tegemist pöördumisega funktsiooni poole, mis on PHP keelest eemaldatud või mille registreerimine mõne versiooniuuendusest tingitud probleemi tõttu ei õnnestu.

Erandiks Call-time pass-by-reference has been removed mis on seotud muutusega PHP süntaksis.

Rakenduse viimiseks uuemale PHP versioonile on vajalik tuvastada vea täpne põhjus ja parandada koodi.

Veateade Fatal error: Incompatible file format

Veebilehte ei kuvata ning lehe alguses on veateade:

Fatal error: Incompatible file format: The encoded file has
format major ID 1, whereas the Loader expects 7
in /data[...]/htdocs/index.php on line 0

Võib kohata Zend Guardi abil krüptitud / litsentsitud rakenduste, ennekõike Sauruse puhul. PHP versiooni vahetamine versioonile 5.6 on võimalik ainult rakenduse koodi väljavahetamise ja uuendamisega (Sauruse tasulist tuge pakub viimasena Bonefarm). Veebi võib teisendada staatiliseks HTMLiks, või viia üle tänapäevasele sisuhaldusele nt WordPressile.

Veateade Warning: Cannot modify header information […]

Seda hoiatust kuvatakse, kui lehe genereerimisel käigus on tekkinud teisi hoiatusi või veateateid, mille väljastamise tõttu ei ole võimalik saata HTTP päringu päiseid:

Warning: Cannot modify header information -
headers already sent by (output started at [...]wp-db.php:57)
in [...]

Ei oma iseseisvat tähendus, võib ignoreerida.

Veateade Warning […]

Veebilehe avamisel kuvatakse lehe alguses või mõnes komponendis teade:

Warning: Creating default object from empty value in [...]
Warning: file_put_contents(): Filename cannot be empty in [...]
Warning: get_class() expects parameter 1 to be object, string given in [...]
Warning: getimagesize(): Filename cannot be empty in [...]
Warning: Illegal string offset 'face' in [...]
Warning: Invalid argument supplied for foreach() in [...]

Mõne funktsiooni parameetri tüüp või väärtus ei vasta oodatule, miska mõni veebirakenduse funktsionaalsus võib toimida plaanitust erinevalt (enamasti lihtsalt soovitud sisu väljastamata jättes).

Kui funktsionaalsus ei ole oluline võib ignoreerida ja keelata Warning teadete väljastamise, lisades veebi juurkataloogi htdocs fail .user.ini seadistusega:

error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED & ~E_WARNING

Zone vaikeseadistus on: error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED

Veateade Deprecated […]

Veebilehe avamisel kuvatakse lehe alguses või mõnes komponendis teade:

Deprecated: Assigning the return value of new by reference is deprecated in [...]
Deprecated: Function set_magic_quotes_runtime() is deprecated in [...]
Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in [...]
Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in [...]

Viidatud funktsioon, selle parameeter või süntaks kaob PHP järgmistest versioonides, aga see ei mõjuta valitud versiooni tööd.

Zone Virtuaalserverites on Deprecated teadete väljastamine vaikimisi keelatud, tõenäoliselt on muudetud seadistust rakenduse koodis, vähemtõenäoliselt globaalse php.ini või .user.ini abil (vt näidet Warning teate juurest).

Seadistuskoha tuvastamiseks sobib käsurealt otsing:

grep -r E_ALL .

Näiteks OpenCart 1.5 puhul annab see tulemuseks järgmised failid:

./vqmod/vqcache/vq2-system_startup.php:error_reporting(E_ALL);
./system/startup.php:error_reporting(E_ALL);
./php.ini:;error_reporting = E_ALL;

PHP koodis tuleks teha muudatus error_reporting( E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED ); ning .ini failides error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED

Ühendus andmebaasiga ebaõnnestub

Kui peale PHP versiooni muutmist 5.6+ peale ühendus andmebaasiga ebaõnnestub, siis kontrollida ega andmebaasikasutajal ei ole kasutusel vana, 6-kohaline salasõna (vana krüptoga loodud salasõna).
Lahenduseks on ära vahetada andmebaasikasutaja salasõna. Uus salasõna töötab ka tagasiulatuvalt vanemate PHP versioonidega kui 5.6.

Kuidas veenduda, et server kasutab tõesti uut versiooni?

PHP versiooni muutumine serveris võtab aega kuni 3 minutit. Uue PHP versiooni rakendumise kontrolliks on soovitav teha suvalise nimega .php fail, mille sisuks:

<?php
phpinfo();

Minnes veebibrauseriga lehele example.com/suvaline-nimi.php kuvatakse PHP versiooni ja kõiki seadistusi (turvakaalutlustel soovitame faili seejärel kustutada).

Kui selgub, et koduleht uuema PHP versiooniga ei tööta, siis on võimalik tunni aja jooksul PHP versioon tagasi muuta. Seda saab teha haldusliideses pea- või alamdomeeni seadetes.

Updated on 13. May 2020

Was this article helpful?

Related Articles