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.
- Novinky, které přinesla verze PHP 5.4. naleznete zde (vlastnosti), zde (funkce), zde (třídy) a zde (metody).
- U třetího parametru ob_start byl změněn datový typ z boolean na integer.
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
$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([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:
na
- 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).