Podręcznik PHP
Poprzedni | Rozdział 3. Instalacja | Następny

# Instalacja na systemach Windows

Ten rozdział dotyczy systemół Windows 95/98/Me i Windows NT/2000/XP. (Proces instalacji nie został sprawdzony na XP). Nie spodziewaj się, że PHP będzie działać na 16-bitowych platformach takich jak Windows 3.1. Czasem odnosimy się do obsługiwanych platform jako Win32

Są dwa główne sposoby instalacji PHP na Windowsach: albo ręcznie lub używając instalatora InstallShield.

Jeśli masz Microsoft Visual Studio, możesz budować PHP z orginalnego kodu źródłowego.

Jak już zainstalujesz PHP na systemie Windows możesz chceć dołączyć różne rozszerzenia aby zwiększyć funkcjonalność.

## Windows InstallShield

Instalator PHP pod Windows jest dostępny pod adresem http://www.php.net/. Pakiet ten instaluje PHP i, w przypadku IIS, PWS i Xitami, także konfiguruje serwer WWW. Zauważ także, że pomimo że instalator InstallShield jest łatwym sposobem na zmuszenie PHP do pracy, ma on wiele ograniczeń, np. nie obsługuje automatycznego ustawienia rozszerzeń.

Zainstaluj wybrany serwer HTTP i upewnij się że on działa.

Uruchom instalator i wykonuj polecenia pojawiające się na ekranie. Dostępne są w rodzaje instalacji: standardowa, która ustawia domyślne opcje, i zaawansowana, która zadaje pytania podczas instalacji.

Instalator zbiera informacje niezbędne do ustawienia pliku `php.ini` i konfiguracji serwera WWW do użycia PHP. Dla serwera IIS a także PWS na NT Workstation, wyświetlana jest lista węzłów na serwerze z ustawieniami mapowania skryptów, z których możesz wybrać węzły do których chcesz dodać mapowania skryptów PHP.

Po procesie instalacji instalator poinformuje cię czy potrzebujesz zrestartować system, zrestartować serwer lub poprostu zacznij używać PHP.

Ostrzeżenie
Wiedz, że taki sposób instalacji PHP nie jest bezpieczny. Jeśli potrzebujesz bezpiecznego sposobu na instalację PHP, zrób to lepiej ręcznie, rozważnie dobierając każdą opcję. Instalator automatyczny daje ci od razu działające PHP, ale nie jest ono przeznaczone do pracy na serwerach produkcyjnych.

## Ręczny proces instalacji

Ten przewodnik poprowadzi cię przez ręczną instalację i konfigurację PHP na serwerach WWW pracujących pod systemami Windows. Musisz pobrać pakiet binariów PHP ze strony http://www.php.net/. Orginalna wersja tego przewodnika została napisana przez Bob Silva i znaleźć ją można pod adresem http://www.umesd.k12.or.us/php/win32install.html.

Ten przewodnik opisuje proces ręcznej instalacji dla:

- Personal Web Server 3 i 4 lub nowszy

- Internet Information Server 3 i 4 lub nowszy

- Apache 1.3.x

- OmniHTTPd 2.0b1 i nowsze

- Oreilly Website Pro

- Xitami

- Netscape Enterprise Server, iPlanet

PHP 4 dla Windows dostępny jest w dwóch postaciach: jako plik wykonywalny CGI (php.exe) lub jako kilka rodzajów modułów SAPI (na przykład `php4isapi.dll`). Ta druga postać jest nowością wprowadzoną w PHP 4 i wprowadza znacznie poprawioną wydajność i ulepszoną funkcjonalnoś.

Ostrzeżenie
Jednakże moduły SAPI NIE powinny być używane na produkcyjnych serwerach. Ogólnie mówiąc, moduły ISAPI mają poważne problemy z niezawodnością, zwłaszcza na platformach starszych niż W2K - możesz doświadczyc wielu błędów 500 serwera a także niestabilności innych modułów serwera, jak np. ASP. Zostałeś ostrzeżony! Powodem jest to, że moduły PHP SAPI używają PHP w wersji z bezpiecznymi wątkami, co jest nowością w PHP 4 i nie zostało to na tyle przetestowane aby zostało uznane za stabilne, a do tego znaleziono już kilka błędów. Z drugiej strony, użytkownicy zgłaszali uzyskiwanie bardzo dobrych wyników z modułami SAPI, jednakże nie znamy nikogo używającego ich na produkcyjnym serwerze. Podsumowując: jeśli potrzebujesz absolutnej stabilności, zamień wydajność modułów SAPI na stabilność plików wykonywalnych CGI.

Jeśli wybierzesz jeden z modułów SAPI i używasz Windows 95, musisz uaktualnić DCOM ze stron Microsoft DCOM. Dla modułu ISAPI wymagany jest serwer WWW kompatybilny z ISAPI 4.0 (sprawdzone z IIS 4.0, PWS 4.0 i IIS 5.0). IIS 3.0 NIE jest obsługiwane; jeśli potrzebujesz natywnej obsługi PHP powinieneś zainstalować Windows NT 4.0 Option Pack z IIS 4.0.

Poniższe kroki powinny być wykonane przed intrukcjami dla konkretnego serwera.

- Zdekompresuj plik dystrybucyjny do dowolnego katalogu, np. `c:\php\`.

- Musisz się upewnić, że wszystkie DLLe których używa PHP mogą być przez niego znalezione. To, które DLLe są potrzebe zależy od tego, których rozszerzeń PHP używasz a także czy PHP jest skompilowane jako CGI czy jako moduł serwera. `php4ts.dll` jest używany zawsze. Jeśli używasz PHP w postaci modułu serwera (np. ISAPI lub Apache), to niezbędne są DLLe z katalogu `sapi`. Jeśli używasz DLLi rozszerzających PHP, one także będą potrzebne. Aby upewnić się że DLLe zostaną znalezione, przekopiuj je do katalogu systemowego (np. `winnt/system32` lub `windows/system`) lub upewnij się że są w tym samym katalogu co główny plik wykonywalny PHP lub DLL twojego serwera WWW (np. php.exe, php4apache.dll).

  Binaria PHP, moduły SAPI i niektóre rozszerzenia opierają się na zewnętrznych bibliotekach DLL. Upewnij się, że dystrybucyjne DLLe znajdują się w jednym z katalogów przeszukiwanych przez Windows. Najlepiej jest przekopiować poniższe pliki do katalogu systemowego, którym jest zazwyczaj:

  c:\windows\system dla Windows 9x/Me
  c:\winnt\system32 dla Windows NT/2000

  Pliki dp przekopiowania to:

  'php4ts.dll', jeśli taki plik już istnieje, nadpisz go
  Pliki z katalogu 'dlls'. Jeśli te pliki są już zainstalowane w twoim systemie, nadpisz je tylko jeśli coś działa nie tak (przed napisaniem ich dobrze jest zrobić kopię zapasową, lub przenieść je do innego folderu - na wszelki wypadek).

  Pobierz najnowszą wersje Microsoft Data Access Components (MDAC) dla twojej platformy, zwłaszcza jeśli używasz Microsoft Windows 9x/NT4. MDAC jest dostępny pod adresem http://msdn.microsoft.com/data/ .

- Skopiuj wybrany plik ini (zobacz niżej) do swojego katalogu '%WINDOWS%' na Windows 95/98 lub do katalogu '%SYSTEMROOT%' na Windows NT/2000/XP mień jego nazwę na `php.ini`. Twój katalog '%WINDOWS%' lub '%SYSTEMROOT%' to zazwyczaj:

  c:\windows na Windows 9x/Me
  c:\winnt lub c:\winnt40 na NT/2000/XP

  Plik dystrybucyjny zawiera dwa pliki ini, `php.init-dist` i `php.ini-optimized`. Zalecamy użycie pliku `php.ini-optimized`, ponieważ opcje zawarte w tym pliku są zoptymalizowane pod względem wydajności i bezpieczeństwa. Najlepiej jest przeczywać rozdział o opcjach inicjalizacyjnych i ustawić każdą opcję własnoręcznie. Jest to dobry sposób jeśli chcesz osiągnąć maksimum bezpieczeństwa, jednakże PHP działa dobrze z domyślnymi plikami ini.

- Wyedytuj swój nowy plik 'php.ini':

  - Musisz zmienić parametr 'extension_dir' aby wskazywał na twój katalog instalacji PHP, lub tam gdzie umieściłeś pliki 'php_*.dll', np. c:\php\extensions

  - Jeśli używasz OmniHTTPd, nie wykonuj tego kroku. Ustaw 'doc_root' aby wskazywało na katalog dokumentów serwera, np. c:\apache\htdocs lub c:\webroot

  - Wybierz które rozszerzenia chciałbyś ładować kiedy PHP się uruchamia. Zobacz rozdział o Rozszerzeniach Windows , gdzie możesz znaleźć informacje jak włączyć te rozszerzenia i co jest już wbudowane w PHP. Dobrze jest zmusić do działania i przetestować nowo zainstalowane PHP jeszcze przed włączeniem rozszerzeń.

  - Na PWS i IIS możesz ustawić `browscap.ini` aby wskazywało na 'c:\windows\system\inetsrv\browscap.ini' na Windows 9x/Me lub 'c:\winnt\system32\inetsrv\browscap.ini' na NT/2000/XP.

  - Katalog `mibs` dostarczany z pakietem dystrybucyjnym dla systemu Windows zawiera pliki z obsługą SMTP. Katalog powinien być przeniesiony do `NAPĘD:\usr\mibs` (`NAPĘD` to napęd na którym zainstalowane jest PHP).

## Budowanie ze źródeł

Przed rozpoczęciem warto jest odpowiedzieć sobie na pytanie: "Dlaczego budowanie pod Windowsem jest takie trudne?" Do głowy przechodzą dwie odpowiedzi:

1. Nie ma dużej społeczności programistów lubiących Windows którzy chętnie dzielą się swoimi kodami źródłowymi. Bezpośrednim efektem jest to, że nie poniesione zostały niezbędne inwestycje w infrastrukturę wymaganą do rozwoju oprogramowania. Zasadniczo to co teraz jest dostępne, to niezbędne narzędzia przeniesione z systemu UNIX. Nie zdziw się, jeśli od czasu do czasu pokażą się takie dziedzictwo.

2. Większosc poniższych instrukcji są w stylu "ustaw i zapomnij". A więc usiądź wygodnie i wykonuj polecenia tak dokładnie jak tylko możesz.

### Przygotowania

Zanim zaczniesz, masz dużo rzeczy do pobrania...

- Dla początkujących, pobierz zestaw Cygwin z najbliższego mirrora cygwin . Zestaw ten zawiera większość popularnych narzędzi GNU używanych w procesie budowania.

- Pobierz resztę narzędzi niezbędnych do budowania z http://www.php.net/extra/win32build.zip.

- Pobierz kod źródłowy reseolvera nazw DNS używanego przrz PHP z http://www.php.net/extra/bindlib_w32.zip. Jest to zamiennik biblioteki `resolv.lib` zawartej w `win32build.zip`.

- Jeśli nie masz narzędzia unzip, musisz je pobrać. If you don't already have an unzip utility, you will need one. Darmowa wersja dostępna jest na InfoZip.

Na koniec, potrzebujesz źródeł samego PHP 4. Możesz pobrać najnowsze źródła korzystając z anonimowego serwera CVS. Jeśli pobierzesz plik typu tarball ze snapshotem lub źródłami, nie tylko będziesz musiał odpakować go tar'em i gzip'em, ale tekże skonwertować znaki końca linii w plikach `*.dsp` i `*.dsw` zanim Microsoft Visual C++ będzie w stanie cokolwiek z nimi zrobić.

> Notatka: Umieść katalogi `Zend` i `TSRM` directories wewnątrz katalogu `php4` aby w procesie budowania były znalezione przez projekty.

### Składanie wszystkiego razem

- Wykonaj poniższe instrukcje aby zainstalować narzędzie Cygwin.

- Uruchom `setup.exe` i wykonuj polecenia instalatora. Jeśli wybierzesz ścieżkę instalacji inną niź `c:\cygnus`, poinformuj o tym proces budowania przez ustawienie zmiennej środowiskowej Cygwin. Pod systemem Windows 95/98 zmienne środowiskowe ustawia się przez dodawanie odpowiedniej linii do pliku autoexec.bat. Pod systemem Windows NT wejdź w Mój Komputer => Panel Sterowania => System i wybierz zakładkę Środowisko.

  Ostrzeżenie
  Stwórz tymczasowy katalog do użytku Cygwin. Bez niego wiele poleceń (zwłaszcza bison) nie będzie działać. Na Windows 95/98, `mkdir C:\TMP`. Na Windows NT, `mkdir %SystemDrive%\tmp`.

- Stwórz katalog i odzipuj `win32build.zip` do niego.

- Uruchom Microsoft Visual C++ i z menu wybierz Tools => Options. W oknie dialogowym wybierz zakładkę 'Directories'. Kolejno zmień listę rozwijaną na Executables, Includes, i Library files, aby się upewnić się, że `cygwin\bin`, `win32build\include`, i `win32build\lib` są na każdej liście. (Aby dodać wpis, wybierz pustą linię z końca listy i zacznij pisać). Zazwyczaj wpisy wyglądają tak:

  - `c:\cygnus\bin`

  - `c:\php-win32build\include`

  - `c:\php-win32build\lib`

  Wciśnij OK i wyjdź z Visual C++.

- Stwórz kolejny katalog i odzipuj do niego `bindlib_w32.zip` . Zdecyduj się czy potrzebujesz symbole do debugowania (bindlib - Win32 Debug) czy nie (bindlib - Win32 Release). Zbuduj odpowiednią konfigurację:

  - Dla użytkowników GUI, uruchom VC++ a potem wybierz File => Open Workspace i wybierz bindlib. Potem wybierz Build=>Set Active Configuration i wybierz pożądaną konfigurację. Na koniec wybierz Build=>Rebuild All.

  - Dla użytkowników linii poleceń, upewnij się że zarejestrowałeś zmienne środowiskowe C++ lub uruchomiłeś vcvars.bat, a później wykonaj jedno z poniższych poleceń:

    - `msdev bindlib.dsp /MAKE "bindlib - Win32 Debug"`

    - `msdev bindlib.dsp /MAKE "bindlib - Win32 Release"`

  - W tym momencie powinieneś mieć gotowy do użytku `resolv.lib` w katalogu `Debug` lub `Release`. Skopiuj ten plik do katalogu `win32build\lib` nadpisując plik o tej samej nazwie który już tam istnieje.

### Kompilacja

Najlepszy sposób na początek to zbudowanie wersji samodzielnej/CGI.

- Dla użytkowników GUI, uruchom VC++, wybierz File => Open Workspace i wybierz php4ts. Później wybierz Build=>Set Active Configuration i wybierz pożądaną konfigurację. Na koniec wybierz Build=>Rebuild All.

- Dla użytkowników linii poleceń, upewnij się że zarejestrowałeś zmienne środowiskowe C++ lub uruchomiłeś vcvars.bat, a później wykonaj jedno z poniższych poleceń:

  - `msdev php4ts.dsp /MAKE "php4ts - Win32 Debug_TS"`

  - `msdev php4ts.dsp /MAKE "php4ts - Win32 Release_TS"`

  - W tym momencie powinieneś mieć gotowy do użytku `php.exe` w katalogu `Debug_TS` lub `Release_TS`.

Powtórz powyższe kroki z plikiem `php4isapi.dsp` (który może być znaleziony w katalogu `sapi\isapi`) aby zbudować kod niezbędny dla Microsoft IIS.

## Instalacja rozszerzeń dla Windows

Po zainstalowaniu PHP i serwera WWW na systemie Windows prawdobopodobnie będziesz chciał zainstalować różne rozszerzenia aby zwiększyć funkcjonalność PHP. Poniższa tabela opisuje niektóre dostępne rozszerzenia. Możesz wybrać które rozszerzenia chcesz załadować kiedy PHP jest uruchamiane poprzez odkomentowanie linii 'extension=php_*.dll' w pliku `php.ini`. Moduły możesz także dołączać dynamicznie w swoim skrypcie kożystając z funkcji dl().

Nazwy DLLi z rozszerzeniami PHP 4 zaczynają się od 'php_' ('php3_' w przypadku PHP 3). Zapobiega to pomieszaniu rozszerzeń PHP i wspierających je bibliotek.

> Notatka: W PHP 4.0.6 obsługa BCMath, Calendar, COM, FTP, MySQL, ODBC, PCRE, Sesji, WDDX i XML jest wbudowana. Nie potrzbujesz ładować żadnych dodatkowych rozszerzeń aby korzystać z tych funkcji. Przeczytaj zawartość pliku `README.txt` lub `install.txt` aby uzyskać listę wbudowanych modułów.

> Notatka: Niektóre z tych rozszerzeń potrzebują do pracy dodatkowych DLLi. Kilka z nich można znaleźć w pakiecie dystrybucyjnym, w katalogu 'dlls', ale dla niektórych, takich jak Oracle (php_oci8.dll), wymagane DLLe nie są dołączone do pakietu dystrybucyjnego.

> Skopuj dołączone DLLe z katalogi 'dlls' do katalogu który przeszukije Windows. Dobrymi miejscami są:

> c:\windows\system dla Windows 9x/Me
> c:\winnt\system32 dla Windows NT/2000/XP

> Jeśłi któreś z nich są już zainstalowane na twoim systemie, nadpisz je tylko jeśli coś nie działa w porządku (przed nadpisaniem ich dobrze jest zrobić kopię zapasową, lub przenieść je do innego folderu - na wszelki wypadek).

Tabela 3-1. Rozszerzenia PHP

Rozszerzenia | Opis | Uwagi
--- | --- | ---
php_bz2.dll | bzip2 - funkcje kompresji | Brak
php_calendar.dll | Calendar - funkcje konwersji kalendarza | Wbudowane od PHP 4.0.3
php_cpdf.dll | funkcje ClibPDF | Brak
php3_crypt.dll | funkcje Crypt | Brak
php_ctype.dll | rodzina funcjictype | Brak
php_curl.dll | CURL, Client URL | Wymaga: libeay32.dll, ssleay32.dll (dołączone do dystrybucji)
php_cybercash.dll | funkcje opłat Cybercash | Brak
php_db.dll | funkcje DBM | Niezalecane. Zamiast tego użyj DBA (php_dba.dll)
php_dba.dll | funkcje DBA: DataBase (dbm-style) Abstraction Layer | Brak
php_dbase.dll | funkcje dBase | Brak
php3_dbm.dll | biblioteka Berkeley DB2 | Brak
php_domxml.dll | funkcje DOM XML | Wymaga: libxml2.dll (dołączony do dystrybucji)
php_dotnet.dll | funkcje .NET | Brak
php_exif.dll | nagłówki Read EXIF z JPEG | Brak
php_fbsql.dll | funkcje FrontBase | Brak
php_fdf.dll | funkcje FDF: Forms Data Format | Wymaga: fdftk.dll (dołączony do dystrybucji)
php_filepro.dll | funkcje filePro | Dostęp tylko do odczytu
php_ftp.dll | funkcje FTP | Wbudowane od PHP 4.0.3
php_gd.dll | Biblioteka obróbki obrazów GD | Brak
php_gettext.dll | funkcje Gettext | Wymaga: gnu_gettext.dll (dołączony do dystrybucji)
php_hyperwave.dll | funkcje HyperWave | Brak
php_iconv.dll | konwersja tablicy znaków ICONV | Wymaga: iconv-1.3.dll (dołączony do dystrybucji)
php_ifx.dll | funkcje Informix | Wymaga: bibliotek Informix
php_iisfunc.dll | funkcje zarządzania IIS | Brak
php_imap.dll | funkcje IMAP, POP3 i NNTP | PHP 3: php3_imap4r1.dll
php_ingres.dll | funkcje Ingres II | Wymaga: bibliotek Ingres II
php_interbase.dll | funkcje InterBase | Wymaga: gds32.dll (dołączony do dystrybucji)
php_java.dll | rozszerzenie Java | Wymaga: jvm.dll (dołączony do dystrybucji)
php_ldap.dll | funkcje LDAP | Wymaga: libsasl.dll (dołączony do dystrybucji)
php_mhash.dll | funkcje Mhash | Brak
php_ming.dll | funkcje Ming dla Flasha | Brak
php_msql.dll | funkcje mSQL | Wymaga: msql.dll (dołączony do dystrybucji)
php3_msql1.dll | klient mSQL 1 | Brak
php3_msql2.dll | klient mSQL 2 | Brak
php_mssql.dll | funkcje MSSQL | Wymaga: ntwdblib.dll (dołączony do dystrybucji)
php3_mysql.dll | funkcje MySQL | Wbudowany w PHP 4
php3_nsmail.dll | funkcje poczty Netscape | Brak
php3_oci73.dll | funkcje Oracle | Brak
php_oci8.dll | funkcje Oracle 8 | Wymaga: biblioteki klienta Oracle 8
php_openssl.dll | funkcje OpenSSL | Wymaga: libeay32.dll (dołączony do dystrybucji)
php_oracle.dll | funkcje Oracle | Wymaga: biblioteki klienta Oracle 7
php_pdf.dll | funkcje PDF | Brak
php_pgsql.dll | funkcje PostgreSQL | Brak
php_printer.dll | funkcje Drukarki | brak
php_sablot.dll | funkcje XSLT | Wymaga: sablot.dll (dołączony do dystrybucji)
php_snmp.dll | funkcje SNMP | tylko NT!
php_sybase_ct.dll | funkcje Sybase | Wymaga: biblioteki klienta Sybase
php_yaz.dll | funkcje YAZ | Brak
php_zlib.dll | funkcje kompresji ZLib | Brak

Poprzedni | Spis treści | Następny
Kompletna lista opcji konfiguracji | Początek rozdziału | Serwery-Apache