Konfigurace PHP
Školení, která pořádám
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=
On Off - 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-1250 utf-8 - Klientům je více než vhodné posílat informaci o tom, v jakém kódování dokument je.
- error_reporting=
7 6135 - 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 seba
len tak dalej uz si medzi mojimi oblubenymi programovacimi strankami ;)
jiriczech:
Jenom jednu malou otazecku: proc win-1250?
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.
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.
>> 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.
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.
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.