Na tom vlastně vůbec nic není! Prostě pustím brew install php56 a je to. Jenže ejhle, není to tak jednoduché a člověk může v mnohém narazit. Konkrétně v DámeJídlo jsme narazili na následující problémy.

Deprecated  $HTTP_RAW_POST_DATA

Protože je to deprecated, tak tohle začalo házet E_DEPRECATED errory. Což vlastně není problém, ale pokud pošlete něco přes POST, tak se nenastartují session. Máte-li  tedy zapnutý výpis chyb typu E_DEPRECATED. Naštěstí error message i návod k migraci říkají, jak se toho erroru zbavit. Stačí v souboru php.ini  nastavit konfigurační direktivu  always_populate_raw_post_data na hodnotu -1. Lokálně to nemusí být problém, ale na serveru už to budete hledat těžko. Především tehdy, pokud už to nastavení máte na localhostu upravené.

Výchozí charset v jediné direktivě

Zdánlivě neškodné a rozumné rozhodnutí. Sloučit hromadu konfigurací do jediné mi přijde ok. Nastavit výchozí nastavení na UTF-8 mi také nepřijde nijak divné. Nicméně má to celkem hodně postranních efektů. Pro nás nejproblémovějším a těžko odhalitelným bylo nastavení HTTP hlavičky Content-Type. V PHP je ten problémový kousek kódu již delší dobu, ale až teď se mi podařilo narazit na jeho efekt.

PHP má v sobě podmínku, že pokud nastavuje hlavičku Content-Type a není zadaný charset, tak doplní výchozí podle globálního nastavení PHP. A to je od verze 5.6 UTF-8. Problém to není, pokud opravdu UTF-8 používáte všude. A tím myslím i různá API. Jakmile totiž někdo závisí na vašem API, může mu taková změna způsobit problémy. Ano, můžeme vést akademickou debatu o tom, že to mají mít implementované lépe, ale to neřeší aktuální problém. Hlavně hromada klientů nemusí ani mít prostředky změnu provést. Nevím proč tahle podmínka v PHP je, ale myslím si, že by mi PHP nemělo nutit nastavení hodnoty jakékoli HTTP hlavičky. Tím spíš když nenabízí žádnou možnost vynutit nepoužití charsetu.

Nicméně tento problém jsme museli z více důvodů řešit i u nás. Řešením nakonec bylo nastavit NULL jako výchozí charset a po nastavení hlavičky zase nastavit původní hodnotu.

Případně lze použít jakýkoli ekvivalent ve frameworku, který používáte.

Závěr

To jsou jediné problémy, na které jsme u nás narazili. Většinu jiných rad ale popisují na webu PHP. Každopádně upgradem jsme získali malé vylepšení výkonu a několik nových features. Asi nejzajímavější pro projekt (ne pro knihovnu) se mi zdají constant expressions. Tolikrát mi chyběly při vývoji, že se těším, až je použiju 🙂 .

One thought on “Přechod z PHP 5.5 na PHP 5.6

Napsat komentář

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