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:80
Listen 80
na:
#Listen 80
Listen 127.0.0.1:80
Dalej 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 Limit
AllowOverride None
zmieniamy na:
#AllowOverride None
AllowOverride All
Dodamy 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:
#PHP5
AddType application/x-httpd-php .php
PHPIniDir "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/ htdocs
Powinniś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.dll
extension=php_sqlite.dll
Może przydać się biblioteka gd2.dll do manipulacji obrazkami poprzez PHP
extension=php_gd2.dll
Ponieważ nasz serwer ma służyć do testowania skryptów powinniśmy włączyć raportowanie błędów zmieniając:
display_errors = Off
na
display_errors = On
oraz ustawić restrykcyjny poziom raportowania poprzez wpisanie wartości 4095 do linii
error_reporting :
, co powinno wyglądać tak:
error_reporting = 4095
Na koniec warto sprawdzić ustawienia safe mod i register globals:
safe_mode = Off
register_globals = Off
W 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