eRIZ’s weblog

PHP, webdesign, Linux, Windows i inne, bo nie samym chlebem człowiek żyje
Serdecznie zapraszam do udziału w ANKIECIE

Instalacja i konfiguracja Apache 2.2 z PHP 5.x pod Windows XP

Instalowanie PHP 5 pod Apache 2.0 do bardzo trudnych nie należy. W związku z tym, iż moje biurko dopalał Indianin 2.0 z Tresowanym Słoniem czwartej generacji, postanowiłem trochę odświeżyć paczki, bo chyba się trochę zastałem.

OK, pora na meritum. Najpierw musimy zaopatrzyć się w niezbędne paczki:

W przypadku Apache’a ściągamy najnowsze dostępne binarki dla Windows (plik .msi; na stronie dostępne jest stabilne wydanie). PHP ściągamy w postaci paczki ZIP.

Zaloguj się jako administrator (no, można jeszcze na ograniczonym, ale nie jest to takie wygodne) i… instalujemy.

Zapraszamy Indianina do tipi

Zaczynamy od Apache’a. Po ściągnięciu pliku apache_2.2.x-win32-x86-no_ssl.msi (albo -ssl; w naszym przypadku będzie to wersja bez SSL-a) uruchamiamy go dwuklikiem. Instruujemy instalatora najczęściej za pomocą przycisku next/install, z dwoma wyjątkami: przy wpisywaniu danych serwera (w “domowych” warunkach wpisujesz cokolwiek) oraz… przy zakończeniu (przecież tam next już nie ma ;P).

Podczas instalacji będziemy mieli możliwość zmiany katalogu, w którym zostaną umieszczone pliki serwera. Ustawmy ścieżkę na np. C:\serwer\apache. Potem popychamy tylko instalatora przyciskiem next. “Mrugnie” parę okienek (oznaczają one startowanie usługi serwera) i w międzyczasie firewall spyta (mam nadzieję, że masz :P), czy zezwolić na nasłuchiwanie na porcie :80. Odpowiadamy twierdząco.

Otwieramy swoją ulubioną przeglądarkę (mam nadzieję, że jest to Opera ;)) i wpisujemy 127.0.0.1. Powinna otworzyć nam się strona informująca o poprawnej instalacji Indianina.

UWAGA: może się zdarzyć, iż firewall nie zapyta o zezwolenie na nasłuch i nie uda się otworzyć strony w przeglądarce. Taka sytuacja występuje dosyć często przy włączonym Skype podczas instalacji. Wystarczy go wyłączyć i uruchomić usługę poprzez komendę net start apache2 wpisaną w Start-Uruchom. Jeśli pomimo to strona nie chce się otworzyć, może to oznaczać, że jakaś inna aplikacja blokuje port. Wówczas musisz sprawdzić ustawienia wszystkich aplikacji, które mogą blokować port. Pomocne może się przydać polecenie netstat -ab.

…sprowadzamy Słonia

Zakładam, że wszystko jest w porządku. Zatrzymujemy Apache za pomocą polecenia net stop apache2. Pora teraz rozpakować pliki z PHP. Utwórz sobie folder C:\serwer\php i rozpakuj tam ZIP-a. Do C:\Windows\system32\ skopiuj następujące pliki:

  • php5ts.dll
  • ntwdblib.dll (jeśli chcesz korzystać z MS SQL; w przypadku wersji 2005 Express musisz skopiować nowszą wersję)

Następnie zmień nazwę pliku php.ini-recommended na php.ini i kopiujemy go do katalogu systemowego.

Tresujemy Słonia

Teoretycznie moglibyśmy już przystąpić do podpięcia PHP w Apache’u jednak wcześniej zatrzymam się na konfiguracji Słonika. W tym celu dwuklikiem edytujemy plik php.ini, o którym już wspomniałem

Plik jest dosyć dobrze opisany, więc osoby obeznane z technicznym angielskim nie będą miały problemów z jego edycją. Dla pozostałych omówię najważniejsze, moim zdaniem, sekcje:

  • display_errors = Off

    Dyrektywa ta odpowiada za wyświetlanie błędów przy parsowaniu skryptów. Domyślnie jest ustawiona na ukrywanie (ze względów bezpieczeństwa), ale uniemożliwi nam poprawianie błędów. Zapewne będziesz tworzyć własne skrypty, więc utrudni to tylko pracę. Zmień Off na On.

  • ;error_log = filename

    Opcja ta umożliwia zapisywanie wszystkich komunikatów o błędach do pliku. Wbrew pozorom, naprawdę ułatwia życie, ponieważ w niektórych wypadkach w ogóle nie zobaczymy błędów (np. podczas przekierowań). Usuń średnik na początku linijki i zamień filename na ścieżkę do pliku, w którym mają być zapisywane “buraki” (np. “C:/serwer/bledy.php.log”)

  • extension_dir = “./”

    Ważne, o ile najważniejsze ustawienie. Definiuje ono, w którym katalogu znajdują się rozszerzenia. Zazwyczaj domyślna ścieżka nie będzie zgadzała się z tym, co mamy na dysku, więc zmień ją na “C:/serwer/php/ext/”

  • ;extension=php_mbstring.dll…

    Wpisy te określają, które rozszerzenia są włączone. Domyślnie, wszystkie są wyłączone. Nie ma sensu włączania wszystkich, ponieważ są one ładowane przy startowaniu kompa. Włączymy tylko kilka z nich: php_mbstring, php_bz2, php_gd2, php_imap (jeśli chcesz obsługiwać odbieranie poczty e-mail w swoich skryptach), php_mysql (jeśli będziesz korzystać z MySQL; wymagane jest również zainstalowanie samej bazy). Każde rozszerzenie aktywujesz poprzez usunięcie średnika na początku linijki.

Zapisz zmiany w pliku.

Sprowadzamy Słonia do tipi

Możemy to zrobić na dwa sposoby: w trybie ISAPI bądź CGI. Upraszczając, ISAPI oznacza załadowanie PHP jako wątek Apache’a. W trybie CGI PHP działa jako osobna aplikacja. Ma to znaczenie dla bezpieczeństwa, które w przypadku CGI jest większe (proces nie zawiesi całego serwera). Natomiast, w przypadku ISAPI generowanie stron jest dużo szybsze. W zastosowaniach “domowych” polecam użycie trybu ISAPI. Opiszę oba:

ISAPI

Najpierw skopiuj plik php5apache2_2.dll z katalogu PHP do folderu bin Apache’a. Wejdź do katalogu conf i zapomocą notatnika otwórz plik httpd.conf

Musimy teraz nakazać Apache’owi przetwarzanie plików z rozszerzeniem .php przez odpowiedni moduł. W celu zachowania porządku, znajdź sekcję zaczynającą się od:

  1. #
  2. # Dynamic Shared Object (DSO) Support
  3. #

i na jej końcu dopisz:

  1. LoadModule php5_module "bin/php5apache2_2.dll"
  2. AddType application/x-httpd-php .php
  3. #PHPINIDir D:/konfiguracja

Jeśli wygodniejszym rozwiązaniem jest dla Ciebie przechowywanie pliku php.ini w katalogu innym niż systemowy, odkomentuj ostatnią linijkę powyższego listingu i podaj ścieżkę wg wzoru.

CGI

Wpisz w tym samym miejscu, co dla ISAPI linijki:

  1. ScriptAlias /php/ "c:/serwer/php/"
  2. AddType application/x-httpd-php .php
  3. Action application/x-httpd-php "/php/php-cgi.exe"

Następnie znajdź linię:

  1. Options Indexes FollowSymLinks

i dopisz na jej końcu ExecCGI

  1. Options Indexes FollowSymLinks ExecCGI

Zmieniamy toporek

Właściwie, to by było na tyle - można by było już wystartować Apache’a, ale domyślne opcje są trochę “niewygodne”.

Mając otwarty plik httpd.conf szukamy:

  • Listen 80, ServerName <nazwa>:80

    Tym ustawiamy port, na którym Apache ma oczekiwać na połączenia. Jeśli coś nam nie pasuje, to zmieniamy 80 na inną liczbę. W większości wypadków nie będzie to jednak potrzebne. ;)

  • #LoadModule rewrite_module modules/mod_rewrite.so

    Od tego wpisu zależy, czy będziemy mogli skorzystać z tzw. “Przyjaznych URL-i”, np. http://serwer/strona/dzial-86. To temat na osobny wpis, więcej na stronie projektu Apache i po polsku na home.pl. Usuń # rozpoczynający linijkę.

  • DocumentRoot “C:/serwer/apache/htdocs”

    Tutaj ustawiamy, w którym katalogu mają znajdować się tworzone przez nas strony. IMHO, lokalizacja niewygodna, więc zmieniamy, np. C:/serwer/strony.

  • DirectoryIndex index.html

    Dyrektywa określa, które pliki mogą być stronami głównymi. Domyślna wartość uniemożliwi nam otwieranie stron napisanych w PHP bez wklepywania index.php na pasku adresu. Proponuję ustawić: DirectoryIndex index.html index.htm default.html default.htm index.php

Zapisz zmiany i umieść pliki swojej strony w odpowiednim folderze (w naszym przypadku, C:\serwer\strony). Na koniec budzimy Indianina (net start apache2) i odwiedzamy 127.0.0.1. :)

PS. Razem z Apache dostajemy program służący do monitorowania stanu serwera. Za jego pomocą możemy wystartować/zatrzymać/zrestartować usługę poprzez “wyklikanie”. Cały czas rezyduje obok zegarka w postaci ikonki Apache.

Przełożyłem na chłopski rozum z manuala i dodałem coś od siebie. ;)

22 komentarzy

dopisz swój :: trackback :: RSS z komentarzami

RSS z komentarzami :: trackback

Skomentuj

Możesz używać znaczników XHTML. Dozwolone są następujące tagi: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>

Wszystkie komentarze przechodzą przez moderację oraz filtry antyspamowe. Nie zostanie opublikowany komentarz, jeśli:

  • Jego treść obraża kogokolwiek.
  • W treści znajdują się wulgaryzmy i słownictwo ogólnie uznane za nieprzyzwoite.
  • Mam wątpliwości co do autora wpisu (Wszelkie anonimy są kasowane - niezależnie od zawartości - wpisz prawdziwy e-mail. Jeśli usunąłem, Twoim zdaniem, komentarz niesłusznie - daj znać). Zdarza się, iż sprawdzam kim jest komentujący.
  • Zawiera jakąkolwiek formę reklamy.

Szufladka