Proč PHP aktualizujeme?

PHP se neustále vyvíjí a vycházejí nová verze a postupně je ukončena podpora verzím starým. Vývoj verze PHP 5.3.3, kterou jsme využívali byl ukončen v červenci 2013, do července 2014 pak vycházely alespoň bezpečnostní aktualizace. Tyto aktualizace již nebudou ve druhé polovině roku 2014 dostupné a PHP 5.3.3 již nebude podporováno a bezpečnostní chyby již nebudou opravovány. Zejména z důvodu zachování vysoké bezpečnosti serverů je tak nutné přejít na novější podporovanou verzi PHP. Mimo zachování bezpečnosti zajistíme aktualizací PHP i podporu nových aplikací, které nejsou na starších verzích PHP funkční.

Hlavní změny ve verzích

Funkce, direktivy a rozšíření, které již nejsou s verzí PHP 5.5. kompatibilní.

  • direktivy register_globals a magic_quotes nejsou od verze 5.4. podporovány.
  • direktivy mbstring.script_encoding byly odebrány -> nově je nutné použít zend.script_encoding.
  • Call-time pass by reference odebráno.
  • Odebrány byly funkce define_syslog_variables(), import_request_variables(), session_is_registered(), session_register() a session_unregister().
  • Rozšíření sqlite bylo odebráno (netýká se rozšíření sqlite3 a pdo_sqlite).

Níže uvedená slova jsou od verze PHP 5.4. rezervována a tudíž nemohou být použita jako názvy funkcí, tříd, apod.

  • trait
  • callable
  • insteadof

V budoucích verzích PHP přestanout být podporovány funkce:

  • mcrypt_generic_end()
  • mysql_list_dbs()
  • rozšíření mysql -> bude nutné použít rozšíření mysqli nebo pdo_mysql
  • preg_replace – > bude nutné použít funkci preg_replace_callback
  • mcrypt (konkrétně mcrypt_cbc(), mcrypt_cfb(), mcrypt_ecb() a mcrypt_ofb())

Nové vlastnosti, funkce, třídy, metody, atd.

PHP 5.5. a open source redakční systémy

Základní instalace open source redakčních systému (Joomla, WordPress, Drupal, atp.) by při provozu na nové verzi PHP neměly vykazovat chyby. Samozřejmě také záleží na doplňcích a šablonách, pokud využívájí výše uvedené direktivy nebo funkce (zejména magic_quotes_gpc a register_globals), je nutné je nahradit, případně aktualizovat. V každém případě doporučujeme provedení aktualizace redakčních systému na nejnovější verze, které jsou plně kompatibilní s verzí PHP 5.5. Mimo zajištění kompatibility se tím i zvýší bezpečnost jednotlivých instalací redakčních systémů.

Známé problémy při provozu starých verzí redakčních systémů na PHP 5.5.

Obecné:

  • V různých případech se může zobrazit varování typu „Warning: Creating default object from empty value in /cesta_ke_skriptu na řádku xy„. V tomto případě je nutné na FTP najít soubor uvedený v chybě a přejít na řádek, který je taktéž v chybě uveden.

Příklad:

Warning: Creating default object from empty value in /www/novephp.cz/novephp.cz/wp-admin/admin-functions.php on line 1617.

Ve skriptu admin-functions.php je na řádku 1617 $ct->title = $themes[$current_theme][‚Title‘];, chybu opravíme tak, že před tento řádek přidáme „$ct = new StdClass;“ (bez uvozovek). Po uložení souboru zpět na FTP se chyba přestane zobrazovat.

Další možnost řešení je vypnutí zobrazování chyb. To lze nastavit v administraci služeb v sekci „Ostatní“. Zde stačí hodnotu nastavení error_reporting přepnout na „Vypnuto“.

Joomla 1.5.x

  • Nelze provést novou instalaci redakčního systému Joomla 1.5.x. Nově je tedy nutné instalovat verze 2.5.x nebo 3.x. Pro instalaci Joomla 3 je možné využít automatické instalace.

Níže uvedené v PHP se mohou objevit u některých zastaralých verzí.

  • Deprecated: preg_replace():

V tomto případě stačí otevřít soubor libraries/joomla/filter/(filter)input.php a změnit zdrojový kód

// Convert decimal
$source = preg_replace(‚/&#(\d+);/me‘, „utf8_encode(chr(\\1))“, $source); // decimal notation

// Convert hex
$source = preg_replace(‚/&#x([a-f0-9]+);/mei‘, „utf8_encode(chr(0x\\1))“, $source); // hex notation

na:

$source = preg_replace_callback(‚/&#x(\d+);/mi‘, function($m){return utf8_encode(chr(‚0x‘.$m[1]));}, $source); // decimal notation
$source = preg_replace_callback(‚/&#x([a-f0-9]+);/mi‘, function($m){return utf8_encode(chr(‚0x‘.$m[1]));}, $source); // hex notation
  • Phoca Gallery

Warning: Creating default object from empty value in administrator/components/com_phocagallery/libraries/phocagallery/image/imagefront.php on line 370.

Je nutné na řádku 370 změnit:

$fileThumbnail->abs = “;

na

$fileThumbnail = new StdClass();
  • V různých případech se může zobrazit varování typu „Warning: Creating default object from empty value in /cesta_ke_skriptu na řádku xy„. V tomto případě je nutné na FTP najít soubor uvedený v chybě a přejít na řádek, který je taktéž v chybě uveden.

WordPress

Samotný wordpress by neměl mít s kompatibilitou zásadní problémy. Potíže však mohou způsobit nekompatibilní pluginy a šablony. Pokud toto nastane, je nutné identifikovat plugin, který vykazuje chyby a provést jeho aktualizaci. Obecně doporučujeme udržování jádra redakčního systému, pluginů i šablon v nejnovějších verzích.

Drupal

Drupal 7 by měl na PHP 5.5. běžet v pořádku. Starší verze Drupal 6 může vykazovat chyby. Doporučujeme aktualizaci na nějnovější verzi Drupal 7.x.

CMS Made Simple

Verze 1.7. a novější by měly fungovat v pořádku. Doporčujeme však použití verze 1.11.10, která je s PHP 5.5. plně kompatibilní.

Prestashop

Verze 1.5. a novější by neměly vykazovat žádné chyby. Starší verze 1.4.x doporučujeme aktualizovat minimálně na 1.5.x, ideálně na 1.6.

OpenCart

Verze 1.5. a novější by neměly vykazovat chyby.

osCommerce

osCommerce je kompatibilní s PHP 5.5. od verze 2.3.3.0.

Magento

Magento Community Editions 1.6.x, 1.7.x a 1.8.x mohou vykazovat chyby. Pokud se tak stane, je nutné nainstalovat patch, který naleznete zde: www.magentocommerce.com/download (sekce Magento Community Edition Patches).

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *