Důležité změny na webserverech s PHP 5.3

Vývojáři PHP zařadili již do řady 5.3 některé novinky očekávané v PHP6. Připravovaná verze 6 podlehla i "odtučňovací kůře" v podobě odstranění velmi zastaralých metod, funkcí a nastavení, které byly pod PHP5 ponechány z důvodu zpětné kompatibility. Aby byla vývojářům usnadněna kontrola kompatibility stránek, při použití zastaralých funkcí varuje PHP 5.3 prostřednictvím error_reporting (viz. dále). Kompletní seznam změn v PHP 5.3 naleznete na této stránce., případně v tomto stručnějším sdělení o vydání PHP 5.3.

Vzhledem k novým možnostem PHP prošly i nové webservery ONEbit.cz řadou pozitivních změn.

Vlastní konfiguraci PHP umožňují (namísto .htaccess) nově soubory .user.ini (obdoba php.ini). PHP i FTP používají stejného vlastníka (uživatele) pro vytvářené soubory i adresáře. Webservery s PHP 5.3 komunikují prostřednictvím modulu FastCGI.

V následujícím souhrnu uvádíme nejpodstatnější změny, kterým byste měli věnovat pozornost, aby Vaše stránky fungovaly na webserverech s PHP 5.3.

Uživatelská nastavení PHP pomocí .user.ini

Od verze 5.3.0 PHP zavádí možnost vlastní uživatelské konfigurace PHP. Použitý formát odpovídá syntaxi php.ini. Vlastní konfiguraci PHP není nutné nijak aktivovat, stačí do požadovaného adresáře umístit soubor .user.ini s obsahem požadovaných změn nastavení. Změny budou aplikovány pro všechny PHP skripty uvnitř adresáře, vč. všech podadresářů. Komentáře v tomto souboru začínají znakem ; (středník)

Příklad souboru .user.ini

;Moje nastaveni php.ini pro PHP 5.3 nebo novejsi

error_reporting = E_ALL
display_errors = 1
register_globals = 0

Důležité

Umožněním této uživatelské konfigurace PHP nahrazujeme starý způsob nastavování v .htaccess pomocí voleb php_value nebo php_flag. Použití těchto direktiv php_* na webserverech s PHP 5.3 způsobí chybu 500 Internal server error.

Pokud vyvíjíte stránky pro různé webservery, doporučujeme jako prevenci tato nastavení PHP v .htaccess vždy uvádět podmíněně. Webserver, který php_* nepodporuje, tak bude direktivy ignorovat. Příklad:

#Moje nastaveni pro starsi PHP

<IfModule mod_php5.c>

php_value error_reporting 6143
php_flag register_globals off
</IfModule>

Výše uvedené změny v PHP neovlivňují používání funkce ini_set(). Ta i nadále zůstává kompatibilní se všemi předchozími verzemi PHP.

Error reporting

Škála chybových hlášek se rozrostla o nové konstanty E_DEPRECATED a E_USER_DEPRECATED. Jejich prostřednictvím PHP 5.3 upozorňuje na zastaralé funkce, které budou v PHP6 odstraněny. Vývojáři by měly používat jejich alternativy.

Důležité

Pokud ve skriptech máte zapnuté vypisování všech hlášení v nečíselné interpretaci error_reporting(E_ALL); a současně aktivní display_errors, může PHP 5.3 začít na stránkách vypisovat právě tyto nové druhy upozornění na zastaralé funkce. V produkční verzi stránek spíše doporučujeme chybové výpisy ponechat vypnuté, aby neobtěžovaly návštěvníky.

Pokud chcete ponechat zapnutá všechna hlášení kromě výše zmíněných upozornění, použijte

<?php
  error_reporting 
(E_ALL E_DEPRECATED);
  
ini_set("display_errors"1);
?>

Pozor, není zpětně kompatibilní se staršími PHP, kde konstanta E_DEPRECATED neexistuje.

 

Jakékoliv kopírování, publikování nebo šíření obsahu je výslovně zakázáno bez předchozího písemného souhlasu společnosti ONEsolution s.r.o.




ONEbit.cz webhosting