Co to vůbec je? Jak začít?
Jazyk PHP lze na serveru využít pro tvorbu dynamicky generovaných stránek
(popř. obrázků atp.). To jsou tedy takové, které mohou měnit (a často to
dělají) svůj obsah v různou dobu atp. Tímto způsobem můžete vytvořit
například návštěvní knihu, anketní systém atp.
PHP skripty musí být na server uloženy s příponou .php nebo .php3.
SQL databáze Vám při tvorbě stránek v PHP nabídne jednoduchý
způsob ukládání strukturovaných dat.
Více informací naleznete například na stránkách pana Koska.
Při programování v PHP zcela jistě oceníte také referenční manuál
k funkcím PHP.
Je na serveru nainstalována knihovna ..., je povolena funkce ...?
V současné době je nainstalována verze PHP 4.3.4 s podporou mj. těchto rozšiřujících funkcí PHP:
(žádná z těchto položek v budoucnu nebude odstraněna, naopak je možné, že
časem některé přibydou)
- GD - práce s grafikou (+ rozšíření pro obrázky jpg, png a tiff a ttf fonty)
- exif - rozšíření formátu jpg o náhledy a vložené textové záznamy
- ftp - připojení se k ftp serveru z php skriptů
- Zlib - práce s komprimovanými daty
- Gdbm - jednoduchá databáze pro ukládání hodnot pod daný klíč
- MySQL - pro připojení k SQL databázi
- BCMath - výpočty s neomezenou přesností
- Gettext - nástroj pro snadnou lokalizaci stránek
- dom, xslt, dom-xslt, dom-exslt, xslt-sablot - pro práci s xml dokumenty a styly
- imap, imap-ssl
Z bezpečnostních důvodů není možné povolit na serveru úplnou sadu možností PHP.
Proto uvádíme seznam zakázaných funkcí:
- Úplně: exec, system, passthru, set_time_limit, error_log, ini_set, dl, popen,
pfsockopen, openlog, syslog, readlink, symlink, link, leak
- Omezeny jsou: souborové a adresářové funkce (na práci se soubory pouze ve Vašem adresáři),
funkce mail (platí omezení na 10 odeslaných e-mailů na jednom účtu za hodinu).
Aktuální konfiguraci můžete snadno zjistit pomocí funkce phpinfo() nebo např. na této stránce.
Jak nastavit své připojení k SQL serveru?
Při přístupu k SQL databázi z PHP je nutné nastavit tyto položky:
Server: mysql.webzdarma.cz
Uživ. jméno: (naleznete v administrační sekci)
Databáze: (stejné jako uživ. jméno)
Heslo: (vámi zvolené, v administrační sekci jej můžete změnit)
Kromě toho lze využít i webového rozhraní na adrese http://mysql.webzdarma.cz.
Co dělat, když mám ve skriptu chybu?
Na serveru je zapnuté vypisování chybových hlášek přímo do generované stránky (přesněji:
zobrazovány jsou chybové hlášky a varování), takže
chyby si všimnete hned, jak se objeví. Nejčastěji se setkáváme s těmito chybovými
hláškami:
- Warning: Cannot modify header information - headers already sent -- Použití
funkce header(), setcookie() atp. předcházel výstup kódu stránky.
Protokol HTTP vyžaduje, aby byly všechny hlavičky odeslány před prvním výstupem.
Součástí chybové hlášky je, v kterém souboru a na kterém řádku výstup začal.
- Warning: access to [cesta] from [cesta] denied in, popř.
open_basedir restriction in effect. File(..) is not within the allowed path.
-- pokoušíte se přistupovat k souboru, který Vám nepatří.
- Warning: file_exists() [function.file-exists]: Unable to access ... -- pristupujete
k souboru, který neexistuje (a proto to varování), hlášení můžete skrýt uvedenim zavináče při volání
funkce: @file_exists(parametr)
- Warning: setlocale() [function.setlocale]: Passing locale category name as string is deprecated. Use the LC_* -constants instead. in [soubor] on [cislo radku] -- od verze 4.3.0 PHP vypisuje toto varování při volání funkce setlocale() s řetězcem jako prvním parametrem. Jedno (horší) řešení je v zakázání chybových hlášení. Lepší řešení (to, které je obsaženo přímo v té hlášce) je umazání uvozovek resp. apostrofů kolem prvního parametru tak, aby předávaný parametr byl konstanta LC_*.
Jak zkopírovat celý obsah databáze?
K obsahu Vaší databáze máte přístup mj. pomocí webového rozhraní phpMyAdmin. Tam lze pomocí funkce "dump" získat celou databázi jako textový soubor.
Do jiné databáze lze tento soubor nahrát např. pomocí řádkového programu "mysql":
$ mysql -u uzivatel -h pocitac -p databaze <soubor_s_dumpem
Jak získat data z SQL správně setřízena (a ve správném kódování)?
Počínaje verzí 4.1 server MySQL umožňuje určení znakové sady zvlášť pro databázi, tabulku a dokonce i jednotlivé sloupce. Pokud neurčíte (např. pomocí phpMyAdminu) jinak, implicitně se použije znaková sada latin2 (iso-8859-2). Pozor: při použití jiné sady je nutné při každém připojení z vašich php skriptů zadat požadovanou znakovou sadu platnou v rámci spojení s SQL serverem pomocí
příkazu SET NAMES znakova_sada, kde jako parametr znakova_sada nejspíše použijete jednu z těchto možností: cp1250, utf8 nebo latin2.
Jak se připojit k SQL z jiného serveru?
Bohužel jsme došli časem k tomu, že naše nezištnost musí mít své hranice a toto
zakázat. Lze se připojit jen a pouze ze serveru webzdarma.cz nebo webového rozhraní.
Jak pracovat s image* funkcemi v PHP?
Na serveru je instalována GD knihovna verze 2, což mj. znamená, že
pokud si např. vytváříte náhledy fotek v galerii, je nutné pro správné zobrazení
nový obrázek vytvářet pomocí funkce imagecreatetruecolor(). Více zjistíte v samotném manuálu PHP
a v našem nastavení PHP.
Jak jsou nastaveny limity MySQL?
Pokud se setkáte s chybou typu User ... has exceeded ... resource ...,
znamená to, že na vašem účtu bylo provedeno přiliš mnoho připojení resp. dotazů do databáze
než je povoleno. Toto omezení existuje proti uživatelům, kteří extrémním způsobem zatěžují
server a bez těchto limitů by byla ohrožena dostupnost služby jako celku.
Očekáváme, že "slušně" napsané skripty (tj. mimojiné takové, které se připojují v průběhu zpracování
jednoho skriptu do databáze jen jedno), by na toto omezení nikdy neměly narazit.
Ve výjimečných případech jsme připraveni toto omezení zajímavým projektům
zvýšit. (To se ale s jistotou netýká webu typu chat, jejiž princip nedovoluje při velké návštěvnosti rozumné
fungování na sdíleném serveru.)
Současné nastavení je takovéto:
- počet připojení za hodinu ... 1500
- počet dotazů za hodinu ... 8000