Velmi často se v různých diskusích setkávám se stížnostmi uživatelů Windows na nejrůznější problémy s provozováním PHP. V tomto článku bych vás chtěl provést instalačním postupem a upozornit na možné chyby a problémová místa. Zaměřím se přitom na skutečně začínající uživatele, ti ostatní, jak předpokládám, mají již podobné potíže za sebou.

1. Instalační zdroje

Než začnete s instalací PHP, je nutné si opatřit něco, čemu se říká stabilní binární distribuce pro Win32. To je již zkompilovaný kód PHP, který by měl být funkční na všech verzích 32 bitových Windows, provozovaných na platformě Intel. Používejte pokud možno pouze oficiální distribuci ze serveru PHP a především se vyhněte různým speciálně upravovaným knihovnám, které se na internetu hojně vyskytují. Mohou vám sice nabídnout vyšší výkon, ale málokdy poskytují služby, které by ospravedlňovaly jejich existenci. Přitom bezpečnostní riziko je nepoměrně vyšší než u originální distribuce.

Přímý link na aktuální stabilní binární distribuci v zip archivu: http://snaps.php.net/win32/php4-win32-STABLE-latest.zip

2. Umístění balíku PHP4

Po rozbalení ZIP archivu s distribucí PHP vezměte jeho obsah a umístěte jej jako celek na místo, kde ho budete provozovat. Často to bývá „C:\php4„, ale není to nezbytně nutné. Já mám své PHP na přenosném disku, s celým pokusným serverem. V dalším textu však budu počítat právě s uvedenou cestou, v dobré víře, že i běžný uživatel dokáže upravit tuto drobnost podle své aktuální situace.

3. Knihovny PHP

Knihovny, které PHP pro svůj běh využívá, musejí být uloženy tak, aby je systém mohl nalézt a identifikovat. Toho se dá dosáhnout buď konfigurací systému nebo uložením knihoven do míst, kde je systém obvykle očekává.

Zde dochází k dalšímu problému, a sice v tom, že každý uživatel volí jiné umístění knihoven (ačkoli v manuálu je jednoznačně řečeno, kde by být měly). Nejlépe se osvědčil adresář „%windir%\system32„. Sem okopírujte všechny knihovny ze složky „C.\php4\dlls“ a navíc ještě knihovnu „php4ts.dll“ přímo ze složky „C:\php4„.

4. Konfigurační soubor php.ini

Konfigurační direktivy PHP se skrývají v souboru „php.ini„. Ve své distribuci ale nejspíše narazíte na soubory „php.ini-dist“ a „php.ini-recommended„. Tyto soubory jsou vlastně komentovanými verzemi v uspořádání, které je vzorovým pro použití v takzvaných produkčních aplikacích (verze recommended) nebo pro testovací a vývojové účely (verze dist).

Použití produkční verze souboru vám víceméně zaručí vysokou bezpečnost a vyšší efektivitu, cenou za ni je však značné omezení testovacích možností (mimo jiné ořezání chybových hlášení, změna v provádění některých funkcí a podobně). Naproti tomu použití testovací verze může mít za následek, že vaše skripty na produkčním serveru vůbec nepoběží. U většiny freehostingů se toho nemusíte obávat, nevím ale, zda jde o výhodu.

Za základ tedy vezměte testovací verzi „php.ini-dist„, přejmenujte ji na „php.ini“ a upravte některé direktivy podle následujícího příkladu, pokud to bude nutné:

register_globals = on
include_path = „.;C:\php4\pear“
extension_dir = „C:\php4\extensions“
upload_max_filesize = 32M

5. Umístění php.ini

Nastává čas položit si obligátní otázku: „Kam s ním?“ I zde se totiž doporučení různí. Mně se osvědčilo vložit jednu kopii souboru do složky „%windir%\system32„, hezky mezi příslušné knihovny, a druhou do složky se souborem „php.exe„, v tomto případě tedy do „C:\php4„. Někdy se totiž stává, že část konfiguračních direktiv je ignorována, což ústí v řadu nepochopitelných chyb. Toto řešení by však mělo všem potížím úspěšně předcházet.

6. Problémy se sessions

Sessions jsou dokonalým příkladem, jak pro malou chybičku trpí desítky nevinných programátorů. Mnozí lidé si sessions doslova znenáviděli jen proto, že se jim je nepodařilo zprovoznit na testovacím serveru. Přitom se připravili o vynikající nástroj, schopný takřka zázraků, o kvantech ušetřených skriptů a hodinách promarněné práce ani nemluvě.

Problém opět spočívá v souboru „php.ini„, v sekci [Session], konkrétně v direktivě „session.save_path„. Ta ukazuje na složku, do které se mají ukládat dočasné soubory s proměnnými. Standardně bývá její hodnota nastavena na „\temp„, což standardně končí chybou skriptu. Někteří odborníci doporučují změnit tuto direktivu tak, aby využívala složky systému Windows pro dočasné soubory, osobně jsem se však setkal se situacemi, kdy toto uspořádání vedlo k neočekávaným problémům. Navrhoval bych vám vytvořit zvláštní složku pro tato data a direktivu upravit tak, aby se na ni odkazovala, například:

session.save_path = „C:\php4\sessiondata“

7. Reinstalace a upgrade

Pokud provádíte reinstalaci nebo nově instalujete PHP4 po několika nepovedených pokusech s různými „one-click“ distribucemi, je dobré počítač nejprve vyčistit od nepotřebného balastu, který bývá hlavní příčinou konečného neúspěchu celé operace. Doporučuji před novou instalací projít celý počítač a natvrdo smazat všechny mnou výše zmiňované soubory, ať už se nacházejí kdekoli. Nikdy nevíte, kde všude se mohly uhnízdit, aby škodily. Pokud nechcete o soubory přijít, zabalte je nějakým komprimačním programem nebo je jinak „zneschopněte“. Pokud to dovedete, není od věci projít i registry a smazat všechny podezřelé položky, nicméně to bych doporučil jen zkušeným uživatelům.

8. Spolupráce se servery Apache

Apache je v současnosti asi neoblíbenější testovací a vývojový server. Momentálně existuje ve dvou verzích, které se ještě nějaký čas budou vyvíjet paralelně, přesto vám již dnes doporučuji testovat aplikace na A2.

Verze A1 a A2 se od sebe liší ve způsobu, jakým s PHP pracují. V obou případech je však nutno vyhledat soubor „httpd.conf“ a upravit jej podle následujících příkladů.

Úprava souboru „httpd.conf“ pro servery A1 (pořadí řádků se nesmí zaměnit):

# doplnit za řádky <Directory „C:/Apache/cgi-bin“> … </Directory>
    ScriptAlias /php/ „C:/php4/“
    <Directory „C:/php4“>
        AllowOverride None
        Options None
        Order allow,deny
        Allow from all
    </Directory>
# doplnit za řádek AddType application/x-tar .tgz
    AddType application/x-httpd-php .php
# doplnit za řádek # Format: Action handler-name /cgi-script/location
    Action application/x-httpd-php „/php/php.exe“

Úprava souboru „httpd.conf“ pro servery A2:

# doplnit na konec sekce LoadModule
LoadModule php4_module „c:/php4/sapi/php4apache2.dll“
# doplnit řádek s DirectoryIndex tak, aby začínal
DirectoryIndex index.php index.php4 index.php3 index.phtml
# doplnit za řádek AddType application/x-tar .tgz
AddType application/x-httpd-php .php .php3 .php4 .phtml

Doufám, že se vám vše podařilo a že jste konečně zkrotili PHP4 ke své spokojenosti. V případě nejasností nebo jiných, v článku nepopsaných problémů, vám doporučuji využít zdejší diskuse.

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Žádný příspěvek v diskuzi

Odpovědět