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.

Jakub Vrána, Dobře míněné rady, 7.3.2005, diskuse: 11 (nové: 0)

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?

ikona Jakub Vrána OpenID:

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.

ikona 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.

ikona 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.

ikona Jakub Vrána OpenID:

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 ;)

Vložit komentář

Používejte diakritiku. Vstup se chápe jako čistý text, ale URL budou převedeny na odkazy a PHP kód uzavřený do <?php ?> bude zvýrazněn. Pokud máte dotaz, který nesouvisí s článkem, zkuste raději diskusi o PHP, zde se odpovědi pravděpodobně nedočkáte.

Jméno: URL:

avatar © 2005-2018 Jakub Vrána. Publikované texty můžete přetiskovat pouze se svolením autora. Ukázky kódu smíte používat s uvedením autora a URL tohoto webu bez dalších omezení Creative Commons. Můžeme si tykat. Skripty předpokládají nastavení: magic_quotes_gpc=Off, magic_quotes_runtime=Off, error_reporting=E_ALL & ~E_NOTICE a očekávají předchozí zavolání mysql_set_charset. Skripty by měly být funkční v PHP >= 4.3 a PHP >= 5.0.