www.SAMURAJ-cz.com 

27.04.2024 Jaroslav Translate to English by Google     VÍTEJTE V MÉM SVĚTĚ

Články

Konfigurace Apache a PHP

Pondělí, 06.03.2006 08:23 | Samuraj - Petr Bouška |
Vysvětlení základního nastavení webového serveru Apache a interpretačního jazyka PHP. Uvádím, podle mne, nejdůležitější položky nastavení jak pro vývojové prostředí, tak pro ostré nasazení serveru. Server Apache, stejně jako PHP, mají velké množství nastavení a použitím správných hodnot můžeme dosáhnout velké funkčnosti. Zde se však jedná o základní nastavení pro první zprovoznění serveru.

Některé hodnoty jsou již defaultně nastaveny na optimální hodnotu, přesto však stojí za povšimnutí, a proto se o nich zmiňuji. Navíc záleží na verzi serveru, případně, zda se jedná o verzi z nějakého balíčku. Jak jsem psal v článku Apache, MySQL, PHP - EasyPHP já používám balíček EasyPHP, kde se již nemusím starat o propojení ApachePHP, MySQL a PHPMyAdminem.

V tomto článku vycházím ze serveru Apache verze 1.3.33 a PHP verze 4.3.10 na platformě Microsoft Windows. Uvedená nastavení by však měla být nezávislá jak na platformě, tak i zhruba na verzi, protože se jedná o základní položky.

Konfigurace Apache - httpd.conf

ServerRoot "C:/Program Files/Apache Group/Apache"

Cesta k instalaci, přesněji ke konfiguraci, logům a chybám. Většinou je nastavena na adresář, kde je Apache nainstalován a nastaví se při instalaci.

#Listen 3000

Napojení na specifickou IP adresu nebo port. Defaultně se nepoužívá Listen ale Port. Znak # způsobí, že se tato hodnota nepoužije (je to znak pro začátek komentáře).

Port 80

Na kterém portu webserver poslouchá. Pokud nechceme na jendom počítači rozběhnout více webových serverů nebo využít například SSL, můžeme použít základní konfiguraci.

ServerName www.samuraj-cz.com

Adresa serveru, využije se jen při speciálních situací, jinak na ní nezáleží. Při ladění můžeme použít třeba localhost.

DocumentRoot "C:/Program Files/Apache Group/Apache/htdocs"

Cesta ke kořenovému adresáři webu. Důležitá hodnota, standardně ukazuje do adresáře htdocs pod Apachem, ale není problém ji změnit. V souvislosti s touto cestou můžeme využít také aliasy.

Directory

Nastavení oprávnění k jednotlivým adresářům. Jedno z nejdůležitějších nastavení. V případě vývojového serveru není tolik důležité, ale u ostrého serveru na tomto nastavení záleží bezpečnost webu. Osobně nastavuji i ve vývojovém prostředí bezpečnější hodnoty.

Pravidla se zapisují mezi tagy Directory. Na začátku se uvádí cesta a jméno adresáře, pročež můžeme s výhodou použít regulární výrazy. Pokud na jeden adresář sedí více pravidel, tak se uplatňují v pořadí od nejméně specifických k nejvíce a jako poslední se použije soubor .htaccess (pokud existuje). Pro nastavení všech adresářů můžeme použít jako jméno /. Pravidla se uplatňují na specifikovaný adresář včetně všech podadresářů. Defaultně vypadá nastavení takto:

<Directory />
  Options FollowSymLinks 
  AllowOverride Options
</Directory>

Toto nastavení je vhodné ještě více omezit a na všechny adresáře vše zakázat a teprve přesnějším určením adresáře povolovat.

<Directory />
     Order Deny,Allow
     Deny from All
</Directory>

Hlavní hodnoty, které můžeme pro nastavení adresářů použít jsou:

Options nastavuje, které serverové vlastnosti budou zapnuty pro daný adresář. Pro přidání vlastnosti se může použít + (ale to je defaultní a tudíž zbytečné) nebo - pro odebrání vlastnosti. Hodnoty:

  • None – žadné vlastnosti nebudou zapnuty.
  • All – zapíná vše, je to defaultní nastavení.
  • ExecCGI – povolení spouštění CGI skriptů
  • FollowSymLinks – server bude následovat symbolické linky
  • Includes – povolení include na straně serveru
  • Indexes – pokud v adrese není indexový soubor (index.html apod.), tak server vrátí výpis adresáře, na ostrém serveru je to velmi špatné a je vhodné vždy zakázat

AllowOverride říká, která nastavení mohou být měněna souborem .htaccess.

Order určuje pořadí, zda se nejprve zakazuje a potom povoluje nebo naopak.

Deny from All zakazuje přístup odkudkoliv

Nastavení pro práva v adresářích je mnohem více, zde jsem uvedl pouze ty základní. Základní nastavení pro kořenový adresář webu, a tedy pro všechny podadresáře na webu, je uvedeno dále, určitě jste si všimli, že není zrovna optimální.

<Directory "C:/Program Files/Apache  Group/Apache/htdocs">
  Options Indexes  FollowSymLinks MultiViews
  AllowOverride None
  Order allow,deny
  Allow from all
</Directory>

Files

Stejně jako oprávnění na adresáře, můžeme nastavovat oprávnění na soubory, opětovně můžeme využít silný aparát regulárních výrazů.

Aliasy

Aliasy jsou jakési odkazy, pomocí kterých, můžeme do kořenového adresáře webu přidat adresář, který se nachází někde jinde. Pro použití aliasů je třeba, aby byl zapnutý modul mod_alias (to je defaultně). Je dobré v dalším kroku nastavit práva na tento adresář.

    Alias /mysql/  "C:/Program Files/Apache Group/Apache/phpmyadmin/"

DirectoryIndex index.html index.shtml index.wml index.pwml index.php index.php3 index.php4

Položka DirectoryIndex obsahuje jména souborů, která jsou brána jako indexová a tedy při zadání adresy bez určení souboru se použije jeden z těchto (pokud existuje). Pokud chceme využít PHP nesmíme zapomenout na nastavení potřebných indexových souborů z PHP.

ErrorDocument 404 /404.phtml

Pomocí hodnoty ErrorDocument můžeme nastavit vlastní vzhled serverových chybových hlášení (chyby 404, 403, 401, 406, 500). Asi nejužitečnější je předělání chyby 404 File Not Found, aby při pokusu přistoupit na neexistující dokument webu, dostal uživatel odpověď s radou a ve stejném designu jako celý web.

Propojení Apache s PHP

Pokud chceme v Apachi rozběhnout PHP, musíme jej samozřejmě nainstalovat, a do konfigurace doplnit následující řádky. Toto nastavení je pro případ, kdy PHP pracuje ve formě webového modulu.

LoadModule php4_module "{cesta}/php/php4apache.dll"
  AddModule mod_php4.c
  AddType application/x-httpd-php .phtml .pwml .php3 .php4  .php .php2 .inc

Konfigurace PHP - php.ini

register_globals = Off

Registrování globálních proměnných pro vstupní data (POST, GET, cookies, proměnné prostředí). Z bezpečnostního hlediska je vhodné nechat tuto hodnotu vypnutou, k datům pak přistupujeme ne přímo (např. $name), ale pomocí asociativního pole (např. $_POST["name"]).

magic_quotes_gpc = Off

Pokud je zapnuto, automaticky přidává uvozovky k hodnotám z GET/POST/Cookie. Lepší je nechat vypnuto a ošetřit při použití dat (hlavně u vkládání do DB, aby nedošlo k SQL injection). Některé hostingy však mají tuto hodnotu zapnutou, proto je třeba s tímto v kódu počítat, abychom nepřidávali uvozovky dvakrát.

error_reporting = E_ALL

Typy zobrazování chybových zpráv (bitově). E_ALL zobrazují se všechny zprávy, vhodné pro vývoj a ladění. E_ALL & ~E_NOTICE – vše mimo upozornění, E_ALL & ~E_WARNINGS – vše mimo varování, apod.

display_errors = On

Zapnutí nebo vypnutí výstupu chybových zpráv. Na ostrém serveru se většinou používá pouze logování a ne výstup přímo na stránku.

session.gc_maxlifetime = 1440

Minimální délka session při neaktivitě. Po zadané době, pokud nedojde k obnovení, se mohou sessions mazat. Důležité je na toto pamatovat, pokud v aplikaci řešíme určitou délku session a při neaktivitě např. uživatele odhlásíme, tak pokud bude tato hodnota kratší než ta co používáme v kódu mohou se nám "ztrácet" sessions.

zobrazeno: 27942krát | Komentáře [4]

Autor:

Související články:

Apache, MySQL, PHP

Články v této sérii se věnují popisu a konfiguraci asi nejpoužívanější kombinace pro provoz webových stránek.

Pokud se chcete vyjádřit k tomuto článku, využijte komentáře níže.

Komentáře

  1. [1] Rosta

    Mám takovy problem ...

    Co mam dělat kdyz mi nejde zaptnout Apache 2.2

    poradte mi prosim na nx9@centrum.cz

    • na komentář odpověděl [2]V_S
    Čtvrtek, 24.01.2008 15:22 | odpovědět
  2. [2] V_S

    odpověď na [1]Rosta: Sehnat někoho, kdo tomu rozumí.

    Nepíšete OS na kterém apache jede. Ale jede to na všem, jen se to musí umět. Nejlépe je použít hotový "balík", kde je obvykle APACHE, MySQL a PHP - např. XAMPP pro WINDOWS.

    Pondělí, 28.01.2008 12:42 | odpovědět
  3. [3] Standis

    kde a jak mam nastavit aby mi apache cetl scripty zacinajici <? a koncici ?> . Skript se nezobrazi pokud neni zapsan takto<?php ?>. jak mam nastavit aby sla i ta zkracena verze zapisu? Dekuji za odpoved

    standisek88@seznam.cz

    Neděle, 05.02.2012 20:15 | odpovědět
  4. [4] Mat

    Zdravím,

    super články, jen poprosím o doplnění syntaxe v <Directory>

    v závislosti na verzi apache (2.2, 2.4), aby to zbytečně nemátlo lidi, kteří začínají

    Čtvrtek, 03.03.2016 10:04 | odpovědět
Přidat komentář

Vložit tag: strong em link

Vložit smajlík: :-) ;-) :-( :-O

Nápověda:
  • maximální délka komentáře je 2000 znaků
  • HTML tagy nejsou povoleny (budou odstraněny), použít se mohou pouze speciální tagy (jsou uvedeny nad vstupním polem)
  • nový řádek (ENTER) ukončí odstavec a začne nový
  • pokud odpovídáte na jiný komentář, vložte na začátek odstavce (řádku) číslo komentáře v hranatých závorkách