Konfigurace PHP
Mám to štěstí, že u všech svých projektů si můžu nadiktovat konfiguraci PHP téměř dle libosti. Obvykle používám toto nastavení:
- register_globals=Off
- Kód je přehlednější, je to také část obrany před problémy vzniklými neinicializací proměnných.
- magic_quotes_gpc=
OnOff - Jedna z možností obrany před SQL Injection.
- magic_quotes_runtime=Off
- Soubory načítané z disku nebo z jiných zdrojů se málokdy ukládají do databáze, proto je jejich automatické escapování na škodu.
magic_quotes_sybase=Off- Databázi Sybase nepoužívám, takže stojím i o escapování zpětného lomítka.
- short_open_tag=Off
- Člověk bez povědomí o PHP ale se znalostí XML lépe pochopí, k čemu se kód vztahuje, za určitých okolností může být soubor s PHP kódem díky respektování této direktivy validním XML dokumentem.
- mysql.trace_mode=On
- Umožňuje snadno odhalovat chyby v SQL dotazech.
- default_charset=
windows-1250utf-8 - Klientům je více než vhodné posílat informaci o tom, v jakém kódování dokument je.
- error_reporting=
76135 - Je dobré být informován o všech chybách, ale nemám rád kontraproduktivní E_NOTICE.
- variables_order=ESCPG
- Když už použiji proměnnou $_REQUEST, je dobré vědět, v jakém pořadí tam proměnné budou, tato direktiva také určuje, které superglobální proměnné budou k dispozici.
- allow_url_fopen=On
- Práce se vzdálenými soubory pomocí běžných funkcí je velmi pohodlná.
Na produkčních serverech potom ještě display_errors=Off a vhodný error_log. Na serverech Apache se všechno tohle nastavení dá ovlivnit v souboru .htaccess.
Nastavení těchto direktiv zjednodušuje kód, obzvláště u direktiv magic_quotes_gpc a magic_quotes_runtime. Pokud jejich nastavení nelze ovlivnit a pokud si nemohu být jist jejich hodnotou (což platí např. u projektů určených k širokému nasazení), je potřeba všechny vnější proměnné a načtená data ošetřit v závislosti na jejich nastavení zjištěném např. funkcí ini_get.
Diskuse
lammer:
konecne poriadny blog co sa nezaobera kravinami ale ma co to do sebalen tak dalej uz si medzi mojimi oblubenymi programovacimi strankami ;)
jiriczech:
Jenom jednu malou otazecku: proc win-1250?
Jakub Vrána
:
Už to mám sepsané v samostatném příspěvku. Shrnutí: pokud můžete, používejte UTF-8, pokud ne, je to celkem jedno.


llook:
magic_quotes_gpc=On ???
Já osobně si radši všechno vyslashuju, až když to potřebuju. Díky ADODB mám navíc vyřešený rozdíly mezi databázemi.

dgx:
>> Nastavení těchto direktiv zjednodušuje kód, obzvláště u direktiv magic_quotes_gpc a magic_quotes_runtime ...
Ve "zjednodušeném" kódu se obvykle lépe dělají a hůř hledají chyby :-)
Ale jak správně píšeš, na nastavení některých direktiv se nelze vždy spoléhat a je třeba je ošetřit. Tím se však ztrácí jejich výhoda. Tedy vlastně jejich neexistence by byla v konečném důsledku přinosem.

Llaik:
Hezky vypis, ale nebylo by vhodnejsi (alespon podle meho nazoru na cilovou skupinu, ktery vznikl na zaklade minulych prispevku) kazdou tu polozku vysvetlit?
"Problem PHP" je ten, ze v nem spousta lidi jen papousku - pise co kde videli ci slyseli, aniz by tusili, co vlastne dela. Proto radeji vysvetlovat a ucit, nez davat pouhe vypisy.
Jakub Vrána
:
Správná připomínka, v příspěvku by to opravdu mělo být vysvětleno, protože dokumentace to nemusí objasnit dostatečně. Doplnil jsem to přímo do textu.


Krispin:
zdravim, priklanim se k Llaikovi, takhle je ten clanek opravdu muzu brat pouze jako neci nazor (z popisu o Vas usuzuji ze nazor zkuseneho, coz ovsem nemusi byt vzdy 100% spravny nazor a hlavne ne pouzitelny pro vsechny a pro vsechny pripady), na coz muzu mit jiny nazor, myslim, ze by bylo vhodny nejen popsat co jaka polozka v nastaveni dela, ale take obhajit (coz si myslim posledni odstavec dostatecne nedela) proc ji mate zapnutou / vypnutou...abych mohl pripadne prehodnotit svuj nazor na onu polozku..:)MartinM:
Myslím si, že je ještě vhodné do toho seznamu přidat session.auto_start=0, protože jinak není možné do session ukládat objekty.XnetmanX:
Zdravím všechny!Tenhle web je super, jeden z mála kde jsem se něco o PHPčku dozvěděl. Ale potřeboval bych pomoct s jednou věcí. Na jedný škole dostali za úkol udělat funkční binární hodiny (viz. http://wosmoa.xf.cz/binclock/binclock.php ). Mělo by se to dělat v PHPčku ale ty moje základy na to nějak nestačí a je to celkem zajímavej úkol, takže bych se s tim rád popral. Najde se někdo kdo by alespoň poradil? Předem díky moc
thomasdv:
Pozdrav tě, náhodou z tý školy přímo sem, takže jestli potřebuješ trochu pomoct, tak se mi ozvi na ICQ 242-970-411 a nějak to pořešíme ;)Diskuse je zrušena z důvodu spamu.

