Jak na Apache, PHP 4 a MySQL pod Windows?

Používám sice na serveru Linux, a Apache, PHP, MySQL, firewall a další věci mi běží na něm, nicméně se mě už pár lidí ptalo jak rozchodit PHP a MySQL a Apache na Windows.

Nemáte Windows, a zajímá Vás, jak na PHP, Apache a MySQL pod Linuxem?

Pod Windows je to poměrně snadné (pod Linuxem taky). Potřebovat budete:

  • binární formu Apache 2.0.49 (soubor apache_2.0.49-win32-x86-no_ssl.msi).
  • PHP 4.3.5, rovněž doporučuji stáhnout si manuál (v .chm formátu).
  • MySQL 4.0/4.1, včetně manuálu a dokumentace.
  • velice doporučuji stáhnout si z mysql.com i aplikaci nazvanou MySQL Control Center (aktuální verze 0.9.3), je to grafická utilita pro práci s databází, na lokále mnohem pohodlnější než phpMyAdmin (který Vám asi nabízí hosting).

Z uvedených webů si stáhněte binární formu daných souborů, pro Windows, a následně proveďte instalaci standardním způsobem. Kompilaci, jako na Linuxu, provádět nemusíte 😉

Pokud se Vám nechce nic konfigurovat, tedy nastavovat httpd.conf a php.ini, stáhněte si jen instalační soubory a potom připravený soubor apache2_php4_win.zip 😉 Vše bude ihned fungovat, stačí rozbalit a zkopírovat…

Uvedené příklady předpokládají, že:

  • Apache je instalován v c:/program files/apache group/apache2.
  • PHP je instalováno v c:/php/
  • Web je umístěn v c:/www/

Po instalaci binárních souborů (jsou to normální instalátory pro Windows, zvolte vždy „default“ instalaci, žádné zvláštní možnosti nejsou potřeba) je nutné nakonfigurovat Apache a PHP následovně:

  • httpd.conf: v c:/program files/apache group/apache2/conf/.
  • php.ini: v c:/php/

Nastavení Apache pro použití PHP, mod_rewrite: (na Windows typicky soubor c:/program files/apache group/apache2/conf/httpd.conf)

Kam je fyzicky nasměrován ‘localhost’, a základní nastavení:

DocumentRoot "C:/www"
ServerName localhost
ServerAdmin vas@email.cz

Modul mod_rewrite:

LoadModule rewrite_module modules/mod_rewrite.so

Práva a povolení (AllowOverride All .htaccess změn):

<Directory>
    Options FollowSymLinks
    AllowOverride None
</Directory>
<Directory "C:/www">
    Options Indexes Includes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

Zákaz klientům aby přistupovali k .htacces:

<Files ~ "^.ht">
    Order allow,deny
    Deny from all
</Files>

Podpora pro PHP jako CGI skript:

ScriptAlias /php4/ "C:/php/"
AddType application/x-httpd-php .php
AddType application/x-httpd-php .php3
AddType application/x-httpd-php .php4
Action application/x-httpd-php "/php4/php.exe"

Podpora pro PHP jako modul (doporučeno):

LoadModule php4_module "c:/php/sapi/php4apache2.dll"
AddType application/x-httpd-php .php
AddType application/x-httpd-php .php3
AddType application/x-httpd-php .php4

Default charset (není ale nutné, pokud to zde uvedete, Apache bude VEŠKERÉ dokumenty posílat s tímto kódováním!!):

DefaultLanguage cs
AddDefaultCharset ISO-8859-2
AddCharset ISO-8859-2  .iso8859-2 .latin2 .cen
AddCharset windows-1250 .win-1250

Přidání index.php do indexu:

DirectoryIndex index.html index.htm index.php

Nastavení PHP (soubor c:/php/php.ini, předpokládám instalaci PHP v C:/php/):

; hlášení všech chyb, dobré pro ladění skriptů
error_reporting  =  E_ALL
display_errors = On
; nastavte na On, pokud Vám skripty nefungují, 
; ale měl by jste se snažit skripty psát i bez toho
register_globals = Off
; cesta k php includes
include_path = ".;c:phpincludes"
extension_dir = "c:phpextensions"
; podpora pro iconv
extension=php_iconv.dll
; podpora pro mbstring
extension=php_mbstring.dll
; smtp server pro odchozí poštu
SMTP = smtp.mail.cz
sendmail_from = vas@email.cz
[MySQL]
; Allow or prevent persistent links.
mysql.allow_persistent = On
[Session]
session.save_handler = files 
session.save_path = "c:/php/tmp"
session.use_cookies = 1 
session.name = PHPSESSID 

Závěrem zkopírujte soubory z adresáře c:/php/dlls/ do c:/windows/system32/ (adresáře se mění dle Vaší instalace), popřípadě nastavte PATH na c:/php/dlls/.

Po úpravách nezapomeňte restartovat Apache, aby se změny projevily.

A ještě něco, default uživatel do MySQL je „root“ a heslo je prázdné, „“. 🙂

Pokud by jste měli s PHP problém a dostávali hlášku „No input file specified.“, doplňte do PHP.INI následující:

cgi.fix_pathinfo=1

Nejsem si jistý, zda je to nutné, ale nakopírujte soubor PHP.INI do c:/windows/ (z c:/php/).

Otestování instalace? Vytvořte soubor nazvaný index.php a umístěte jej do c:/www/ (DocumentRoot):

<html>
<head><title>PHP Test</title></head>
<body>
<? phpinfo(); ?>
</body>
</html>

Pokud je vše instalováno správně, zadáním http://localhost do URI Vašeho browseru se Vám zobrazí řada informací o konfiguraci PHP. Kromě jiného je zajímavý výpis pole $_SERVER[“].

Komentáře 55

  1. #1 Jiří Macich ml.

    Já jsem toto dělal relativně nedávno. Instaloval jsem podle Yuhůova návodu "Triádu" a bez problémů. Jenom mi týden trvalo pochopit, že PHP stránky mohu otevírat jen přes http: //localhost a ne normálně poklepáním. Jsem to ale lama 😳

  2. #2 Radek Hulán autor webu ▲10 ▼0

    [1] každý dělá něco poprvé, to není ostuda, to je proces učení se, i proto jsem napsal tento článek, aby to bylo... jednodušší 8)

  3. #3 Radek Hulán autor webu ▲10 ▼0

    [1] Triáda? Hm. Tipnul bych to na to samé, co stažené binárky z linků nahoře, akorát to všechno bude (o dost?) starší... Doporučil bych spíše postup uvedený zde...

  4. #4 Havran

    No skor by som dal PHP ako modul. Ako CGI skript PHP nepodporuje niektore veci a na kazdom slusnom webhostingu kde bezia na UNIX systeme a Apache je PHP 100% ako modul.

    Konkretne: Prostředky HTTP autentikace jsou v PHP přístupné pouze pokud PHP běží jako modul Apache, tudíž nejsou přístupné v CGI verzi. V PHP skriptu běžícím pod modulem Apache lze použít funkci header() k odeslání zprávy "Authentication Required" klientskému browseru, což vyvolá zobrazení dialogového okna pro vložení uživatelského jména a hesla. Jakmile uživatel zadá jméno a heslo, URL obsahující tento PHP skript se zavolá znovu s proměnnými $PHP_AUTH_USER, $PHP_AUTH_PW and $PHP_AUTH_TYPE obsahujícími jméno, heslo a typ autentikace. V současnosti je podporována pouze "Basic" autentikace. Více informací viz funkce header(). (z PHP manualu)

  5. #5 Radek Hulán autor webu ▲10 ▼0

    [4] ale TADY SE BAVÍM O WINDOWS, asi jste četl moc rychle a nedbale 😉, na localhostu a Windows je CGI varianta STABILNĚJŠÍ, proto je taky zvolena...

    Na svém Linuxu samozřejmě používám PHP jako modul Apache serveru, kompilaci PHP pod Linuxem jako modul jsem popisoval dříve, viz:

    http://myego.cz/inde...

  6. #6 Vilém Málek

    Den ode dne si připadám starší a starší. Proč? Protože čtu stále častěji totéž, tedy staré, do nekonečna opakované a mílané věci. Opravdu bylo nutno přiřadit k těm stovkám jiných návodů další popis "instalace" této triviality? ;(

  7. #7 Radek Hulán autor webu ▲10 ▼0

    [6] no, nejlepší je to co Vás nebaví nečíst 😉 Tak to aspoň dělám já..

    Jinak, nepsal bych to, ale když se mě pár lidí ptalo, že neví jak PHP, a mod_rewrite rozchodit (potom co Yuhů napsal spot o 404)...

    Jsou i lidi, co je jim 15-20 let, a... toto jim pomůže 💡 Občas více /musím si rýpnout/ než nějaké články na Interval.cz...

  8. #8 Jiří Macich ml.

    [3] No, podle toho webu, kde jsem to stahoval, je vše v nejnovější dostupné verzi. Otázka je, jestli ten web je aktualizovaný, ale asi ano, když tam bylo nějaké vyjádření autorovi lítosti nad smrtí Španělů při nedávných atentátech k němuž se samozřejmě připojuji...

  9. #9 Miroslav Navrátil

    [8] Jirko... O to nejde. Slunečnice je taky denně aktualizovaná a přitom je na ní software který je tři roky starý... O to vůbec nejde.

    Jinak triádu používám taky, a moc jsem s ní spokojen - nemusím nic konfigurovat 😄

  10. #10 Vilém Málek

    [7] Jen tak pro informaci, včera byla uvolněna nová verze Apache 2.0.49 ;~)

  11. #11 Radek Hulán autor webu ▲10 ▼0

    [10] ok, upravil jsem odkaz 🙂

  12. #12 Jiří Macich ml.

    [9] Ale to je jasný i mě!!!

    Jestliže je ale Triáda, PHP, MySQL a podobné hlavní náplní toho webu a je často aktualizovaný (dnes v noci se změnila úvodní stránka - asi aktualizace), tak by to tvrzení, že jde o nejnovější možnou verzi mělo být OK. Na druhou stranu nebudu každý den instalovat něčeho novou verzi jen proto, že někdo ve zdrojáku vyměnil jeden znak a z verze 1.80.0000.52 je verze 1.80.0000.52,5 (pro ilustraci). 😕

  13. #13 Radek Hulán autor webu ▲10 ▼0

    [12] ale jo, já "triádu" neznám, ale stejně, ono tam "automaticky" je předkonfigurován i mod_rewrite, iconv, php, a pár dalších věcí?

  14. #14 Pavel@cetoraz

    Kompilaci, jako na Linuxu, provádět nemusíte

    Uaaaaaaaa. Nechápu, proč mají všichni představu, že na linuxu se "pořád musí něco kompilovat" Můžou za to přesně tyhle články.

    Já jsem od chvíle co jsem nainstaloval FC1 nezkompiloval ani jádro, ani apache ani phpka ani (skoro) nic. Všechno beru z distribuce - je to vyzkoušené, funkční a obsahuje to, co potřebuji. A pokud něco není v distru, dám apt-get install a je to. Pouze 2 věci kompiluji - knowit nemá balíky a na mplayer mám pomalý počítač, takže si ho kompiluji sám.

  15. #15 Radek Hulán autor webu ▲10 ▼0

    [14] hm, asi to je věc preferencí, já než bych hledal binárku s iconv, mod_rewrite, mbstring a pár dalšíma věcma, tak si to raději zkompiluji a je během pár minut hotovo..

    a řada věcí pro Linux se vůbec jako binárka nedistribuuje 😉

  16. #16 Pavel@cetoraz

    [15] Jenomze spousta lidi si to precte a rekne si, hmm, to abych neco nainstaloval, to musim kompilovat. to na windoze nemusim.

    Slysel jsem uz spoustu spoluzaku (na vejsce), ktery zamitli linux s tim, ze nez pri instalaci kompilovat jadro, to radsi zustanou u w.

    Ale ok, jsou samozrejme veci, co se kompilovat musi (nebo je dobre to udelat - jako ten mplayer), ale neni to bezpodminecne nutne

  17. #17 Havran

    [5] Ja som myslel na to ze Apache na windows sluzi na vyvoj a nie na stalu prevadzku 🙂. Inak mam naistalovany Apache 2.0.48 + PHP 4.3.4 ako modul a za celu dobu co s tym robim som nevypozoroval jediny problem. Tak neviem ci to nie je len mytus pochdzajuci z doby pociatkov vyvoja apache rady 2 a PHP 4...

  18. #18 Radek Hulán autor webu ▲10 ▼0

    [16] no, ono to na Linuxu je ale opravdu složitější, já osobně bych Linux nedoporučoval tomu, kdo chce s PHP, Apache a MySQL začít, těch problémů k řešení (=nutných znalostí) je přece jenom více... Učit se PHP, XHTML a k tomu poznávat Linux... je na hodně lidí až moc...

  19. #19 Radek Hulán autor webu ▲10 ▼0

    [17] ale jo, ono to už možná bude jinak, se stabilitou, já mám "zažité", že CGI Win je stabilnější, ono taky pro verze jako 2.0.20-30 to skutečně stabilnější BYLO než modul, a... dál jsem to nezkoumal 8)

    PS: tím modulem je myšlen Linux či Win? Já na Linuxu mám PHP taky jako modul a super stabilita... Ale na Win bych preferoval CGI...

  20. #20 Havran

    [19] Windows samozrejme.