Z pewnością w necie znajduje się już wiele poradników w temacie instalacji i konfiguracji PHP + Apache, jednak nie zawsze zawierają wszelkie niezbędne informacje. Wczoraj sam przebrnąłem przez proces aktualizacji z Apache 2.2 i PHP 5.2 do Apache 2.4 + PHP 5.4 co defakto oznaczało ponowną instalacją i konfiguracją tych dwóch softów.
Poniżej kompletny opis całego procesu.
Instalacja Apache 2.4
Ściągamy najnowszą wersję Apache dla Windows ze strony http://www.apachelounge.com/download/ z sekcji Apache 2.4 win32 binaries, obecnie jest to httpd-2.4.3-win32.zip.
Ściągniętego zipa rozpakowujemy i zapisujemy w dowolnej lokalizacji, powiedzmy że to będzie
c:/web/Apache24/
Z tej samej strony z sekcji Apache 2.4 win32 modules ściągnij też moduł php5apache2_4.dll-php-5.4-win32.zip, będzie on niezbędny do poprawnej obsługi PHP w Apache.
Instalacja PHP 5.4
Ściągnij PHP w wersji VC9 x86 Thread Safe ze strony http://windows.php.net/download/, rozpakuj do katalogu
c:/web/php/
Z wcześniej ściągniętego modułu php5apache2_4.dll-php-5.4-win32.zip wypakuj plik php5apache2_4.dll do katalogu
c:/web/php/ext/
Przy wypakowywaniu zwróć uwagę na to, żeby wersja php5apache2_4.dll zgadzała się z wersją instalowanego PHP. W php5apache2_4.dll-php-5.4-win32.zip powinny znajdować się podkatalogi typu „PHP 5.4.7”, „PHP 5.4.8” etc…
Konfiguracja Apache
Otwieramy w dowolnym edytorze plik c:/web/Apache24/conf/httpd.conf i na końcu pliku dodajemy linie
LoadModule php5_module "c:/web/php/ext/php5apache2_4.dll" AddHandler application/x-httpd-php .php PHPIniDir "c:/web/php"
Linie te kolejno zawierają:
- ścieżkę do modułu PHP,
- definicję rozszeżenia plików, które mają być interpretowane jako skrypty PHP
- ścieżkę do katalogu, w którym znajdują się pliki PHP
Zmieniamy domyślną ścieżkę do plików Apache:
ServerRoot "c:/Apache24"
ServerRoot "c:/web/Apache24"
Zmieniamy linię:
DirectoryIndex index.html
DirectoryIndex index.php index.html
Dzięki temu plik index.php będzie automatycznie uruchamiany jako plik startowy katalogu.
Zmieniamy linię:
#ServerName www.example.com:80
ServerName localhost:80
Zatem nasze serwisy lokalnie będą widoczne pod adresem http://localhost/.
Zmieniamy domyślny katalog document root na pożądany:
DocumentRoot "c:/Apache24/htdocs" <Directory "c:/Apache24/htdocs">
DocumentRoot "d:/web/web-work" <Directory />
Następnie uruchamiany cmd i wklejamy:
c:/web/apache24/bin/httpd.exe -k install
co spowoduje zainstalowanie apache jako usługę, będzie się on automatycznie uruchamiał wraz ze startem sytemu.
Aby dodać obsługę plików .htaccess należy odkomentować moduł mod_rewrite:
LoadModule rewrite_module modules/mod_rewrite.so
oraz zmieniamy ustawienia nadpisywania:
# Deny access to the entirety of your server's filesystem. You must # explicitly permit access to web content directories in other # <Directory> blocks below. # <Directory /> AllowOverride none Require all denied </Directory>
# Deny access to the entirety of your server's filesystem. You must # explicitly permit access to web content directories in other # <Directory> blocks below. # <Directory /> AllowOverride All Require all granted </Directory>
# # 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
# # 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 All
dzięki czemu z poziomu .htaccess będzie można zmieniać domyślne ustawienia serwera.
Konfiguracja PHP
Zmieniamy nazwę pliku c:/php/php.ini-development na php.ini i edytujemy.
Poprzez usunięcie średnika „;” z początku linii odkomentowujemy definicję katalogu z modułami:
extension_dir = "ext"
oraz wszelkie niezbędne moduły, np.:
extension=php_mysql.dll extension=php_mysqli.dll extension=php_pdo_mysql.dll extension=php_curl.dll extension=php_gd2.dll extension=php_mbstring.dll
Restartujemy apache.
Wczytane moduły PHP możemy wyświetlić poprzez komendę:
C:\> php -m
komenda ta jest o tyle ważna, że w przypadku błędnej konfiguracji pliku php.ini braku modułu w katalogu ext lub nieprawidłowego pliku modułu otrzymamy komunikat o błędzie.
Koniec. Można teraz stworzyć plik phpinfo.php i sprawdzić konfigurację. W przypadku zmian w php.ini lub httpd.conf należy zrestartować Apache.
Możliwe problemy
- Apache nie chce się uruchomić.
Z poziomu cmd uruchom debugowanie konfiguracji apache poprzezhttpd.exe -S
Otrzymasz szczegóły błędów, które spowodowały, że serwer nie mógł się uruchomić. Następnie googlaj błędy.
- Błąd przy uruchomieniu Apache: „apache2: Could not reliably determine the server’s fully qualified domain name”.
Oznacza, że nie ustawiłeś nazwy serwera, należy zedytować plik httpd.conf i zmienić tę linię. - Błąd przy odpaleniu skryptu php: „.htaccess: order not allowed here”.
Apache nie pozwala na nadpisywanie domyślnych ustawień, należy zrobić to. - Jeżeli z jakichś względów nie ładują się moduły php mimo tego iż php.exe -m wyświetla je prawidłowo zmień w php.ini ścieżkę do „ext” z względnej na bezwzględną np.: „c:/web/php/ext”
Dochodząc do momentu instalacji Apache, czyli np. e:/serwer/Apache24/bin/httpd -k install wywala błąd, że „Nazwa e:/serwer/Apache24/bin/httpd nie jest rozpoznawane jako polecenie wewnętrzne lu zewnętrzne, program wykonywalny lub wstadowy”. Patrząc w folderze to rzeczywiście tego pliku tam nie ma, a jestem pewien, że wszystko dobrze zostało rozpakowane.
Dodaj rozszerzenie .exe” „e:/serwer/Apache24/bin/httpd.exe -k install” – windows raczej nie domyśli się samemu pełnej nazwy pliku.
co to może być?
httpd.exe: Syntax error on line 524 of C:/web/Apache24/conf/httpd.conf: Cannot l
oad D:/php5apache2_4.dll into server: The specified module could not be found.
plik jest na 100% w tym miejscu i pod tą nazwą, problem był taki, że mam wercję 4.8 tego pliku a php jest 4.9, czy to może robić konflikt? Raczej powinien mi o tym napisać, a nie, że nie może załadować, bo go nie widzi
Michał… wrzuć tą bibliotekę php5apache2_4.dll do głównego katalogu PHP i oczywiście wersję tej biblioteki trzeba przypasować do wersji PHP :).
Dlaczego zainstalowales wersje php VC9 jesli na stronie php jest wyraznie napisane ”
Which version do I choose?
If you are using PHP with Apache 1 or Apache2 from apache.org you need to use the VC6 versions of PHP
If you are using PHP with IIS you should use the VC9 versions of PHP
VC6 Versions are compiled with the legacy Visual Studio 6 compiler
VC9 Versions are compiled with the Visual Studio 2008 compiler and have improvements in performance and stability. The VC9 versions require you to have the Microsoft 2008 C++ Runtime (x86) or the Microsoft 2008 C++ Runtime (x64) installed
Do NOT use VC9 version with apache.org binaries”?
instaluję na Win7 pro 64-bit
zrobiłem jak w instrukcji i mam taki błąd
C:\Windows\system32>e:/usr/apache24/bin/httpd.exe -k restart
httpd.exe: Syntax error on line 530 of E:/usr/Apache24/conf/httpd.conf: Cannot l
oad e:/usr/php/ext/php5apache2_4.dll into server: %1 nie jest prawid\xb3ow\xb9 a
plikacj\xb9 systemu Win32.
C:\Windows\system32>
Wiem, że jest napisane w instrukcji, ale sprawdź czy wgrałeś php5apache2_4.dll zgodny z instalowaną wersją PHP, nic innego nie przychodzi mi do głowy.
W moim przypadku, w czasie instalowania Apache występuje następujący komunikat, mimo to że posiadam uprawnienia administracyjne:
„Microsoft Windows [Version 6.2.9200]
(c) 2012 Microsoft Corporation. Wszelkie prawa zastrzeżone.
C:\Windows\system32>c:/web/apache24/bin/httpd -k install
Installing the Apache2.4 service
(OS 5)Odmowa dostŕpu. : AH00369: Failed to open the WinNT service manager, perh
aps you forgot to log in as Adminstrator?”.
Czy mogę w jakiś sposób to ominąć, pragnę tutaj zaznaczyć, że korzystam z Windows 8
Z góry dziękuję za pomocne rady.
Czy mogę w jakiś sposób to ominąć,
Spróbuj uruchomić CMD w trybie administratora. Prawy mycha i „Uruchom jako Administrator”/ „Run as Administrator” następnie wykonaj ponownie „httpd -k install”.
Zainstalowałem najnowszą wersje php 5.4.13. W załączniku „php5apache2_4.dll-php-5.4-win32.zip” jest tylko wersje od 5.4.0 do PHP 5.4.9. Szukałem na stronie. W katalogu c:\web\php\ext dodałem plik php5apache2_4.dll. Mimo to pokazuje mi się błąd:
”
C:\>c:/web/apache24/bin/httpd -k restart
httpd: Syntax error on line 528 of C:/web/Apache24/conf/httpd.conf: Cannot load
c:/web/php/ext/php5apache2_4.dll into server: Nie mo\xbfna odnale\x9f\xe6 okre\x
9clonego modu\xb3u.
”
przypuszczam że winą jest taka że dodałem plik z katalogu od wersji php 5.4.9 w instalacji do katalogu c:\web\php\ext
Czy mogę prosić o pomoc, albo jeśli jest możliwość przysłanie na maila ten pliczek dll dla php 5.4.13
Świetny artykuł. Dosyć dokładnie i szczegółowo opisana konfiguracja.
Posiłkowałem się nim podczas instalacji serwera na moim kompie i napotkałem ten sam problem z plikiem php5apache2_4.dll (C:/web/Apache24/conf/httpd.conf: Cannot load
c:/web/php/ext/php5apache2_4.dll into server: Nie mo\xbfna odnale\x9f\xe6 okre\x
9clonego modu\xb3u.).
Rozwiązanie jest proste.
Należy jeszcze skopiować plik libmysql.dll z katalogu php
tutaj „c:/web/php” do katalogu Apache/bin.
U mnie to pomogło.
witam mam do was pytanie co to za bład mpm_winnt error ??
niby na samym dole pisze service is already installed a gdy wpisuje http://localhost/ wyskakuje komunikat Czy zamiast spodziewanej witryny WWW widoczna jest ta?
a w jakim folderze lerzy ten httpd -k install bo nie mogłem go znaleść
httpd.exe leży w katalogu bin Twojej instalacji Apache, jeżeli nie pamiętasz gdzie zainstalowałeś apache skorzystaj z wyszukiwarki plików i po prostu znajdź „httpd.exe”
backslashe zamiast slashy w sciezce przy instalacji daj bo niektorzy moga sie glowic, no i ten „.exe” :p
pozdrawiam
A z Windowsem 8 będzie podobnie? ma ktoś jakieś doświadczenia z najnowszym Windowsem + apache + php + mysql?
Nie ma absolutnie zadnych problemow z win8 a nawet win 8.1 (orginal). Apache (httpd-2.4.6-win64-VC11 ) PHP 5.5.4 (VC11 x86 Thread Safe) , MYSQL 5.6.14 ( Community Server (GPL) ), phpMyAdmin 4.0.8-rc1. Wszystko smiga jak ta lala. Jesli sie bezblednie skonfiguruje, odpowiednie uprawnienia zmieni itd,itd,itd. Powodzenia.
Witam,
super poradnik wszystko działa… Ale musiałem sporo poprawić by mi to poszło :P
Udało mi się ominąć błąd:
httpd.exe: Syntax error on line 530 of C:/web/Apache24/conf/httpd.conf: Cannot l
oad C:\\web\\php\\ext\\php5apache2_4.dll into server: Nie mo\xbfna odnale\x9f\xe
6 okre\x9clonego modu\xb3u.
wrzucając plik „php5apache2_4.dll” do :
C:\web\php\
a nie:
C:\web\php\ext\
i zmieniając
LoadModule php5_module C:/web/php/ext/php5apache2_4.dll
na
LoadModule php5_module C:/web/php/php5apache2_4.dll
————————-
Poza tym nie wiem czy jest to problem ale linijka którą autor proponuje zmienić z:
DocumentRoot „c:/Apache24/htdocs”
na:
DocumentRoot „d:/web/web-work”
odwołuje się do nieistniejącego katalogu i to jeszcze na dysku D ;)
więc proponuje:
DocumentRoot „c:/web/web-work”
i ręczne stworzenie folderu w tej lokalizacji.
———————–
Ostatnia sprawa to skąd wziąć odpowiednie wersje php i modułu do Apacha?!?
A oto odpowiedź:
stare wersje php które pasują do starych modułów podanych w artykule:
http://windows.php.net/downloads/releases/archives/
Ja zainstalowałem ten: php-5.4.9-Win32-VC9-x86.zip
i do tego plik php5apache2_4.dll z podanego linku w artykule. (Plik z folderu PHP 5.4.9)
Powodzenia ;)
Gdybyście podczas instalacji Apache’a mieli błąd
(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
to znak, że jakaś usługa nasłuchuje na porcie 80. U mnie był to Skype – dla Skype’a zatem należy wtedy w Opcje -> Zaawansowane -> Połączenie odznaczyć „Użyj portów 80 oraz 433 jako alternatywnych dla połączeń przychodzących” i zrestartować Skype.
Witam, zrobiłam wszystko z powyższymi instrukcjami, jednak nie mogę sobie poradzić z następującym błędem; przy wykonaniu komendy „httpd.exe -S” wyskakuje mi następujący komunikat błędu : „Syntax error on line 531 of D:/apacz/Apache24/conf/httpd.conf : Cannot load d:/apacz/Apache24/PHP/php5apache2_4.dll into server: %1 nie jest prawid\xb3ow\xb9 aplikacj\xb9 systemu Win32” . Bardzo proszę o konkretne odpowiedzi i z góry dziękuję za zainteresowanie :)
Zapomniałam napisać : system to Windows 7 64bit
Ona, sprawdź ten komentarz http://blog.adiasz.pl/2012/10/30/instalacja-apache-2-4-php-5-4-pod-windows-7/#comment-5912 – moze pomoże.
:-)
G.
Link: http://www.apachelounge.com/download/win32/binaries/httpd-2.4.3-win32.zip
w tym momencie nie pasuje modul apache-gowno-2-4
i koniec…
No niestety zrobienie pliku php5apache2_4.dll zaleznego od wersji kazdego g powoduje, ze to wszystko jest bezuzyteczne.
Jedynym sposoem jest zmuszenie apache do uruchamiania php zewnetrznie
Hej,
Pamiętajcie, że serwer Apache musi być x64 jeżeli chcecie ładować moduł php w wersji x64
Nie jest możliwością używanie plików DLL x64 w programie x32 i odwrotnie.
świetnie, pomimo kilku problemów przydatny pomocnik; bardzo dużo pomogło skomentowanie błędów przez kolegów
Witam, ja zmieniałem Apache ze starej wersji do nowej poprzez instalację najnowszego Xamppa (xampp-win32-1.8.3-5-VC11-installer). Następnie zrobiłem poprawki wg http://www.cast-control.net/mediacp/docs/upgrading-xampp.html ale niestety, pomimo uważnego przerobienia plików C:/xampp/php/php.ini i C:/xampp/apache/conf/httpd.conf
localhost nie odpowiada. Czy możecie podpowiedzieć co jest błędnego w tym wszystkim ??