Opisana procedura dotyczy instalacji serwera Apache i PHP w systemie Windows. Wynikiem prac będzie działający domowy serwer umożliwiający swobodne testowanie naszych skryptów PHP. Do takiego celu wystarczy praktycznie bezobsługowa instalacja i drobne prace porządkowe.
Zaczynamy od pobrania najnowszego instalatora ze strony The Apache HTTP Server Project. Podczas pisania tego tutoriala jest to wersja 2.2.4. Wybieramy, więc Win32 Binary (MSI Installer): apache_2.2.4-win32-x86-no_ssl.msi I zapisujemy na dysku.
Po odpaleniu instalatora
akceptujemy umowę licencyjną

Kolejne okienko wypełniamy np. tak:
Dalej w sekcji Install Apache HTTP Server 2.2 programs and shortcuts for:
wybieramy for All Users on Port 80, as a Service. Spowoduje to uruchamianie serwera
automatycznie przy starcie Windowsów albo, jeśli wolimy ręczne uruchamianie usługi
wybieramy drugą opcję.

Następnie wybieramy typ instalacji: Typical
i folder, do którego będziemy instalować pliki serwera. Proponuję stworzyć na wybranej
partycji katalog serwer i tam zainstalować Apache'a np.
F:\serwer\Apache2.2\

I to koniec. 
Teraz w zasobniku systemowym powinniśmy mieć ikonkę Apache Monitora,
który pozwala na uruchamianie i zatrzymywanie usługi Apache2.

Możemy z tego miejsca zmienić również sposób uruchamiania serwera wybierając przycisk
Services z automatycznego na ręczny.

Po wpisaniu w pasku adresu naszej ulubionej przeglądarki http://localhost jeśli
wszystko poszło bezbłędnie powinniśmy zobaczyć informację:

W razie problemów proszę przejść na koniec tutoriala
Od tej pory mamy działający serwer WWW. Powinniśmy jednak sprawdzić i ewentualnie skorygować parametry jego pracy Wszystko sprowadza się do edycji pliku httpd.conf który znajduje się w katalogu conf (F:\serwer\Apache2.2\conf\)
Proponuję zrobić tutaj kilka rzeczy. Po pierwsze zmienić adres katalogu domowego. Domyślnie Apache uruchamia pliki z katalogu htdocs/. Ale my stworzymy sobie ten katalog gdzie indziej. Proponuję wewnątrz uprzednio stworzonego katalogu serwer/. U mnie ścieżka wygląda tak F:\serwer\htdocs\. Musimy teraz poinformować Apache'a o tej decyzji. W pliku httpd.conf szukamy linii:
# DocumentRoot: The directory out of which you will serve your# documents. By default, all requests are taken from this directory, but# symbolic links and aliases may be used to point to other locations.DocumentRoot "F:/serwer/Apache2.2/htdocs"i zmieniamy na:
# DocumentRoot "F:/serwer/Apache2.2/htdocs"DocumentRoot "F:/serwer/htdocs"oraz w lini:
# This should be changed to whatever you set DocumentRoot to.#<Directory "F:/serwer/Apache2.2/htdocs">zmieniamy na:
#<Directory "F:/serwer/Apache2.2/htdocs"><Directory "F:/serwer/htdocs">Jak widać oryginalne wpisy zostały tylko zahaszowane tak, aby w każdej chwili można było cofnąć wprowadzone zmiany.
Kolejne modyfikacje pliku konfiguracyjnego httpd.conf będą miały na celu zablokowanie dostępu z zewnątrz. W tym celu zmieniamy wpis:
# Listen: Allows you to bind Apache to specific IP addresses and/or# ports, instead of the default. See also the #<VirtualHost># directive.# Change this to Listen on specific IP addresses as shown below to# prevent Apache from glomming onto all bound IP addresses (0.0.0.0)#Listen 12.34.56.78:80Listen 80na:
#Listen 80Listen 127.0.0.1:80Dalej umożliwimy nadpisywanie w plikach .htaccess zmiennych serwera. Wpis:
# AllowOverride controls what directives may be placed in .htaccess files.# It can be "All", "None", or any combination of the keywords:# Options FileInfo AuthConfig LimitAllowOverride Nonezmieniamy na:
#AllowOverride NoneAllowOverride AllDodamy również domyślnie wyświetlane pliki w przypadku gdy zostanie podana tylko ścieżka
do katalogu dopisując index.php do DirectoryIndex:
# DirectoryIndex: sets the file that Apache will serve if a directory# is requested.<IfModule dir_module> DirectoryIndex index.html index.htm index.php</IfModule>Kolejna poprawka to uruchamianie modułu mod_rewrite odpowiedzialnego za przepisywanie adresów, pozwoli to w przyszłości cieszyć się przyjaznymi adresami URL
Wystarczy odszukać linii LoadModule rewrite_module modules/mod_rewrite.so
i odhaszować ją.
Po wszystkich modyfikacjach powinniśmy jeszcze zrestartować Apache'a przy pomocy Apache Monitor'a.
Tutaj również pobieramy najświeższy instalator ze strony http://www.php.net/downloads.php, dla mnie jest to PHP 5.2.3 installer.
Po pobraniu instalera odpalamy go
Akceptujemy umowę licencyjną
i wybieramy ścieżkę instalacji. Proponuję zainstalować PHP
również w katalogu serwer/ (u mnie F:\serwer\php\)

Dalej wybieramy serwer WWW
dla nas będzie to Apache 2.2.x Module
i miejsce naszego pliku konfiguracyjnego Apache'a
httpd.conf, będzie to: serwer\Apache2.2\conf\

Następnie możemy wybrać składniki instalacji – proponuję dodać Extensions
oraz z Extras bibliotekę
PEAR

Dalej akceptujemy

Teraz mamy już zainstalowane PHP.
Rozpocznijmy od skontrolowania pliku konfiguracyjnego Apache'a (httpd.conf) w którym po instalacji PHP na końcu powinien znaleźć się wpis:
#PHP5AddType application/x-httpd-php .phpPHPIniDir "F:\\serwer\\php\\"LoadModule php5_module "F:\\serwer\\php\\php5apache2_2.dll"Jeśli podobny wpis pojawił się w Waszym httpd.conf przechodzimy do modyfikacji pliku konfiguracyjnego PHP a jest nim php.ini. Znajdziemy go w katalogu instalacyjnym PHP (serwer/php/). Zmieńmy tutaj ścieżkę do naszych skryptów i stron tak jak to zrobiliśmy przy konfiguracji Apachea (serwer/ htdocs/) dopisując do:
doc_root =nową ścieżkę
doc_root = F:/serwer/ htdocsPowinniśmy jeszcze ustawić ścieżkę do rozszerzeń wpisując do linii
extension_dir = "./"namiary na katalog ext/ który znajduje się w katalogu instalacyjnym PHP (serwer/php/ext/), u mnie po zmianie wygląda ona tak:
extension_dir = " F:/serwer/php/ext"Teraz możemy już dodawać różne rozszerzenia z sekcji Dynamic Extensions
poprzez usunięcie średnika (;) poprzedzającego interesującą nas linię.
Proponuję, więc dodać obsługę bazy danych sqlite poprzez odblokowanie dwóch linijek:
extension=php_pdo.dllextension=php_sqlite.dllMoże przydać się biblioteka gd2.dll do manipulacji obrazkami poprzez PHP
extension=php_gd2.dllPonieważ nasz serwer ma służyć do testowania skryptów powinniśmy włączyć raportowanie błędów zmieniając:
display_errors = Offna
display_errors = Onoraz ustawić restrykcyjny poziom raportowania poprzez wpisanie wartości 4095 do linii
error_reporting :, co powinno wyglądać tak:
error_reporting = 4095Na koniec warto sprawdzić ustawienia safe mod i register globals:
safe_mode = Offregister_globals = OffW PHP 5 są one domyślnie wyłączone i tak powinny pozostać.
Możemy jeszcze ustawić domyślne kodowanie znaków zmieniając i odhaszowując
;default_charset = "iso-8859-1"na takie, w którym zazwyczaj zapisujemy pliki ze skryptami (iso-8859-2 lub utf-8).
Pozostaje nam teraz ponowne uruchomienie Apache'a i przetestowanie PHP. W tym celu do katalogu serwer/htdocs/ wrzucamy plik np. test.php który zawiera taki wpis:
<?PHP phpinfo();?>i odpalenie go w przeglądarce wpisując http://localhost/test.php
Jeśli wszystko działa to wyświetli nam się strona informacyjna

Jeśli edytowaliśmy pliki konfiguracyjne to najlepiej przywrócić oryginalne edytować je stopniowo – po każdej modyfikacji restartować Apache'a i kontrolować zachowanie serwera.
Częsty problem wywołują również aplikacje wykorzystujące port 80, powodujące wyświetlenie takiego komunikatu podczas instalacji:
(OS 10048)Tylko jedno użycie każdego adresu gniazda (protokół│/adres sieciowy/port) jest normalnie dozwolone. : make_sock: could not bind to address 0.0.0.0:80 no listening sockets available, shutting down
Unable to open logs
Do takich programów należy Skype. Aby pozbyć się tego problemu w menu Skype Narzędzia → Opcje w zakładce Zaawansowane → Połączenie - odznaczamy opcjię: Użyj portów 80 oraz 443 jako alternatywnych dla przychodzących połączeń.
Jeśli problem nadal występuje szukamy innych programów siedzących na porcie 80. Z wiersza polecenia wywołujemy: netstat -p tcp -ano szukamy linii z portem 80 (127.0.0.1:80) i stanem NASŁUCHIWANIE i sprawdzamy PID procesu.
Aby go namierzyć otwieramy menadżera zadań i sprawdzamy, co jest sprawcą zamieszania (jeśli nie ma w nim kolumny PID to trzeba to ustawić w widok → Wybierz kolumny). Dalej to już kwestia zmiany konfiguracji takiego programu bądź wyłączenie go.
Życzę miłej zabawy z PHP!!!
przejdź do góry