Nejrůznější PHP tutoriály často radí, abyste na začátku skriptů zavolali session_start(). Bez něj totiž nemůžete pracovat se sessions. To je samozřejmě pravda. Často v návodech chybí důležité upozornění – sessions byste měli nastartovat pouze v případě, kdy s nimi opravdu potřebujete pracovat. Na grafech můžete vidět, jak se díky tomu sníží zátěž serveru, pokud se tím budete řídit.
PHP 8.1 změnilo zpracování SQL chyb, ve striktním režimu nově vyvolá výjimku
Až do PHP 8.0 bylo nastaveno výchozí reportování chyb mysqli_report() na stav MYSQLI_REPORT_OFF. To se změnilo s příchodem PHP 8.1.0, kde je výchozí nastavení kombinace MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT. Autoři PHP se tak rozhodli kvůli tomu, že databázové chyby jsou častý problém, které ovlivňuje běh webových aplikací – nyní se tedy programátoři webů budou muset poprat se všemi chybami.
Rozdíl mezi nastavím lze popsat následovně:
Instalace nejnovější verze Apache 2.4, PHP 8.2, MariaDB 10.11 a Memcached na Windows 10 a 11
Nainstalujte si webový server Apache 2.4 se skriptovacím jazykem PHP 8.2 přímo na svůj počítač s Windows 10 a 11. K tomu si během pár vteřin přidejte databázový server MariaDB 10.11 a Memcached.
A pro fajnšmekry tu je návod na „VirtualHost“, který využijete pro více (sub)domén na localhostu. Každá (sub)doména bude mít vlastní „DocumentRoot“ a bude dostupná na samostatné adrese, například http://tronlaserarena.cz.localhost a http://devtea.cz.localhost.
Instalace nejnovější verze Apache 2.4, PHP 8.0, MariaDB 10.5 a Memcached na Windows 10
Nainstalujte si webový server Apache 2.4 se skriptovacím jazykem PHP 8.0 přímo na svůj počítač s Windows 10. K tomu si během pár vteřin přidejte databázový server MariaDB 10.5 a Memcached.
A pro fajnšmekry tu je návod na „VirtualHost“, který využijete pro více (sub)domén na localhostu. Každá (sub)doména bude mít vlastní „DocumentRoot“ a bude dostupná na samostatné adrese, například http://tronlaserarena.cz.h a http://devtea.cz.h.
POZOR: Už existuje novější návod na instalaci Apache 2.4, PHP 8.2, MariaDB 10.11 a Memcached na Windows 10 a 11.
PHP: Pozor na zákeřnou funkci filter_var() a FILTER_VALIDATE_INT. Provádíte validaci nulových hodnot (a nejen těch) správně?
Chceme ověřit, jestli vstup od uživatele je opravdu jakákoliv hodnota integer. Očekáváme tedy celé záporné číslo, celé kladné číslo nebo nulu. Pokud pro validaci celočíselných hodnot (FILTER_VALIDATE_INT) používáme PHP funkci filter_var(), můžeme se při nevhodně použité podmínce dostat do problémů s nulou.
PhpStorm 2020: Jak vypnout otevírání zdrojových souborů v novém odlehčeném editoru „LightEdit“?
Nová verze aplikace PhpStorm 2020.1 přinesla spoustu vylepšení a také odlehčený editor nazvaný LightEdit, který slouží pro rychlou úpravu zdrojových souborů. Editor se sice zobrazí bleskově, ale chybí mu pluginy, porovnání obsahu a další užitečné nástroje, na které jste zvyklí z plnohodnotného PhpStormu.
Vývojáři budou LightEdit nadále vylepšovat, pokud vám ale jeho současné funkce nedostačují (prakticky nic neumí) nebo nechcete čekat, můžete se vrátit k původnímu chování – otevírání zdrojových souborů v plnohodnotném PhpStormu.
Internet Explorer nezobrazuje JPG/JPEG obrázky s chybně nastaveným MIME typem
Možná jste se setkali s problémem, kdy Internet Explorer 8-11 nezobrazil nějaký obrázek s příponou JPG, který byl vytvořený přes PHP. Pokud jste původní obrázek zpracovali přes PHP funkci imagecreatefromjpeg() a následně vytvořili nový obrázek pomocí imagejpeg(), tak vězte, že vytváříte soubor JPEG, nehledě na to, že jste mu dali příponu JPG.
Pokud navíc máte zakázáno očmuchávání MIME typu pomocí této hlavičky:
Jak přesměrovat web z HTTP na HTTPS a přidat WWW?
Přesměrování všech požadavků z HTTP na HTTPS a přidání www lze snadno provést pomocí .htaccess souboru (Apache) s následujícím obsahem. Myslete na to, že je nejlepší řešení nejprve všechno přesměrovat z HTTP na HTTPS a až poté v dalším kroku přidat WWW.
Měli byste vědět, že uvedený postup vyžaduje také HSTS (HTTP Strict Transport Security, neboli vynucené HTTPS), takže pokud jej někdy v budoucnu budete chtít využít, budete aspoň připraveni.
Přesměrování tedy může vypadat nějak takto:
PHP cURL: „Curl error: SSL certificate problem: self signed certificate in certificate chain“
Pokud voláte URL adresu (na HTTPS) pomocí PHP knihovny cURL, která nevrací žádný relevantní obsah, ale pouze FALSE, zkuste si vypsat chybovou hlášku pomocí:
echo curl_error($curl);
Možná dostanete tuto chybovou hlášku: Curl error: SSL certificate problem: self signed certificate in certificate chain.
PHP: Jak pomocí mkdir() jednoduše vytvořit vnořený adresář? I když některý adresář v cestě zatím neexistujte
Máte existující adresář /data/ a chcete v něm pomocí PHP vytvořit další dva adresáře (export/temp/)? Čili aby výsledná struktura vypadala nějak takto: /data/export/temp/
Zavolání funkce:
mkdir('/data/export/temp/')
zahlásí chybu, protože nedokáže vytvořit adresář „temp“ v adresáři „export“, který neexistuje. Potřebujete tedy zavolat funkci mkdir() se třetím parametrem „true“ (recursive), kterým říkáte, že chcete, aby funkce vytvořila všechny adresáře, které jsou v cestě uvedeny.