Nacházíte se zde: Úvod Podpora Nápověda Migrace aplikací Přesun z PHP 4 na PHP 5.6
Přesun z PHP 4 na PHP 5.6
Na této stránce uvádíme popis technických rozdílů mezi PHP řady 4 a 5.6. Tyto informace Vám pomohou při přesunu aplikace z PHP 4 na PHP 5.6.
DŮRAZNĚ VARUJEME: NEPOUŠTĚJTE SE SAMI DO ÚPRAV APLIKACÍ, POKUD NEJSTE PROGRAMÁTOR
PHP řady 5 přirozeně navazuje na řadu 4 (verze 5.6 je poslední z této řady). Řada 5 je vyvíjena od roku 2004 a ukončení její podpory nastane na konci roku 2018 (my ji na našich službách ale budeme podporovat ještě několik let). Vzhledem k větší příbuznosti s PHP 4 si přesun pravděpodobně vyžádá méně změn v kódu aplikací oproti přesunu z PHP 4 na PHP 7.
Fungování aplikací přes interpret PHP 5.6 si můžete vyzkoušet již nyní na stávajícím serveru. Stačí na Vašem počítači nastavit ruční překlad adres podle návodu v nápovědě, použijte IP adresu 91.239.200.65
. Pokud budete provádět úpravy kódu, doporučujeme aplikaci zkopírovat, například na nějakou subdoménu (aby nedošlo k její nefunkčnosti v současné produkčním prostředí).
V případě zájmu si můžete přečíst hostingovou zprávu o plánovaném ukončení podpory PHP 4 na Českém hostingu.
Změny v PHP a webserveru
Změny v PHP enginu jsou detailně popsány v průvodcích pro migraci mezi jednotlivými řadami, které vývojáři publikovali na webu php.net. Konkrétně se jedná o migraci z PHP 4 na PHP 5.0, z PHP 5.0 na PHP 5.1, z PHP 5.1 na PHP 5.2, z PHP 5.2 na PHP 5.3, z PHP 5.3 na PHP 5.4, z PHP 5.4 na PHP 5.5 a z PHP 5.5 na PHP 5.6. Některé změny jsou i v konfiguraci webserveru. Změny, které mohou aplikace zasáhnout nejčastěji a jejichž řešení bude vyžadovat větší či menší úpravy:
- Zrušení register_globals
V PHP 4 je ve výchozí hodnotě register_globals zapnuto, od PHP 5.4 je toto nastavení úplně zrušeno (čili je stále vypnuto). Řešení uvádíme v nápovědě v článku Globální proměnné. - Změna výchozího nastavení session.auto_start
V PHP 4 máme výchozí hodnotu direktivysession.auto_start
On, od PHP 5 Off. Řešení je velmi jednoduché - buď na začátku skriptu, který potřebuje pracovat se sessions, zavolat funkci session_start(), nebo si v klientské sekci v nastavení PHP pro příslušnou (sub)doménu session.auto_start zapnout. - Zrušení magic_quotes_gpc
Automatické escapování je v PHP 4 ve výchozím nastavení zapnuto, od PHP 5.4 je úplně zrušeno (čili je stále vypnuto). Řešením je ošetřovat data pomocí funkcí k tomu určených - např. addslashes(). - Změna výchozího nastavení allow_url_include
Includování vzdálených URL je v PHP 4 ve výchozím nastavení povoleno, od PHP 5 zakázáno (a z bezpečnostních důvodů jej ani povolit nelze). Bližší informace a možné řešení najdete v nápovědě v článku Includování stránek. - Změna systému oprávnění
Zatímco na serverech s PHP 4 je při práci se soubory (a adresáři) třeba zohledňovat, jak byl soubor na serveru vytvořen (jestli PHP skriptem, nebo nahrán přes (S)FTP), na serverech s PHP 5 a dále to díky upravenému a zjednodušenému systému oprávnění už není třeba. Výchozí práva zde umožňují se všemi soubory plnohodnotně pracovat všemi způsoby. Pokud ale ve svých skriptech nějak operujete s oprávněním, bude potřeba tuto funkcionalitu upravit, nebo vypustit (protože měnit práva už není třeba). Bližší informace najdete v nápovědě v článku Přístupová práva a vlastníci souborů. - Změna jména adresáře hlavní domény
Na serverech s PHP 4 je aplikace na hlavní doméně umístěna v automaticky vytvořeném adresáři začínajícímwww.
(např. www.example.com). Na serverech od PHP 5 a dále je tento adresář přejmenován - www. bylo vypuštěno (takže se nyní jmenuje např. example.com). Pokud někde ve svých skriptech pracujete s cestou k tomuto adresáři, bude potřeba tento údaj náležitě upravit.
Změny v databázích
Současně se změnou používané řady PHP dojde i ke změně používaného databázového systému. Na serverech s PHP 5.6 je k dispozici MySQL řady 5.5. Oproti MySQL 4.0 používané na webserverech s PHP 4 došlo k mnoha změnám, nicméně jedinou významnou zpětně nekompatibilní je úprava práce s kódováním. Pro zajištění správného zobrazení textů z databáze je po připojení potřeba zavolat SQL dotaz, kterým se definuje kódování pro komunikaci mezi aplikací a databází. Bližší informace a příklady najdete v nápovědě v článku Kódování v MySQL/MariaDB.