PHP Conference Nagoya 2025

Installation für Apache 2.x auf Windows-Systemen

Dieser Abschnitt enthält Hinweise und Tipps zur Installation von Apache 2.x mit PHP unter Microsoft Windows.

Hinweis:

Bitte lesen Sie zuerst die Installationsanweisungen für PHP unter Windows!

Es wird außerdem dringend empfohlen, die » Apache-Dokumentation zu lesen, um ein grundlegendes Verständnis des Apache 2.x Servers zu bekommen. Lesen Sie auch die » Windows-spezifischen Hinweise für Apache 2.x, bevor Sie hier weiterlesen.

Laden Sie die neueste Version von » Apache 2.x und eine passende PHP-Version herunter. Folgen Sie den Installationsanweisungen für PHP unter Windows und kommen Sie zurück, um mit der Integration von PHP und Apache fortzufahren.

Es gibt drei Möglichkeiten, PHP für die Nutzung mit Apache 2.x unter Windows einzurichten. PHP kann als Handler, als CGI oder unter FastCGI ausgeführt werden.

Hinweis: Beachten Sie bitte, dass Sie bei Pfadangaben in der Apachekonfigurationsdatei unter Windows alle Backslashes, wie z. B. c:\directory\file.ext, in Schrägstriche umwandeln sollten: c:/directory/file.ext. Bei Verzeichnisnamen kann weiterhin ein abschließender Schrägstrich nötig sein.

Installation als Apache-Handler

Hinweis: Bei Verwendung der SAPI apache2handler muss die threadsichere (Thread Safe, TS) Version von PHP verwendet werden.

Um das PHP-Modul für Apache 2.x zu laden, müssen die folgenden Zeilen in die Apache-Konfigurationsdatei httpd.conf eingefügt werden:

Beispiel #1 PHP und Apache 2.x als Handler

# vor PHP 8.0.0 war der Name des Moduls php7_module
LoadModule php_module "c:/php/php8apache2_4.dll"
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>
# Konfigurieren des Pfades zur php.ini
PHPIniDir "C:/php"

Hinweis: Statt C:/php/ muss im obigen Beispiel der tatsächliche Pfad zu PHP angegeben werden. Stellen Sie sicher, dass sich die Datei, auf die in der LoadModule-Direktive verwiesen wird, am angegebenen Ort befindet. Verwenden Sie für PHP 7 php7apache2_4.dll und für PHP 8 php8apache2_4.dll.

PHP als CGI ausführen

Es wird dringend empfohlen, die » Apache CGI-Dokumentation zu konsultieren, um ein umfassenderes Verständnis für die Ausführung von CGI unter Apache zu bekommen.

Um PHP als CGI laufen zu lassen, müssen die php-cgi-Dateien in einem Verzeichnis abgelegt werden, das mit der ScriptAlias-Direktive als CGI-Verzeichnis gekennzeichnet ist.

In den PHP-Dateien muss eine #!-Zeile eingefügt werden, die auf den Speicherort des PHP-Programms verweist:

Beispiel #2 PHP und Apache 2.x als CGI

#!C:/php/php.exe
<?php
  phpinfo();
?>

Warnung

Wenn Sie das CGI-Setup verwenden, ist Ihr Server für einige mögliche Angriffe anfällig. Wie Sie sich vor diesen Angriffen schützen können, entnehmen Sie bitte dem Kapitel über CGI-Sicherheit.

PHP unter FastCGI ausführen

PHP unter FastCGI laufen zu lassen hat eine Reihe von Vorteilen gegenüber der Ausführung als CGI. Die Einrichtung ist ziemlich einfach:

Sie finden mod_fcgid auf » https://www.apachelounge.com. Die Win32-Binärdateien können von dieser Website heruntergeladen werden. Installieren Sie das Modul gemäß den Anweisungen, die Sie mit dem Modul erhalten.

Konfigurieren Sie den Webserver wie im Folgenden gezeigt und passen Sie dabei die Pfade entsprechend der Installation auf dem System an:

Beispiel #3 Apache für die Ausführung von PHP als FastCGI konfigurieren

LoadModule fcgid_module modules/mod_fcgid.so
# Wo befindet sich die php.ini-Datei?
FcgidInitialEnv PHPRC        "c:/php"
<FilesMatch \.php$>
    SetHandler fcgid-script
</FilesMatch>
FcgidWrapper "c:/php/php-cgi.exe" .php
Dateien mit der Erweiterung .php werden nun vom PHP FastCGI-Wrapper ausgeführt.

add a note

User Contributed Notes 5 notes

up
43
wolfeh1994 at yahoo dot com
10 years ago
Please for the love of god, download the threaded version. I spent over an hour trying to figure out why php5apache2.dll could not be found, and while desperately looking through manuals I went into the php 5 structure and found that it doesn't exist in the non-threaded version.

This really could use a mention somewhere other than the PHP 5 structure, like the paragraph to the left of the homepage which talks about which PHP version to choose, or this part of the manual which covers Apache... Anywhere but structure, seriously. I would have never guessed to look there.
up
8
a solution for simpletons like me
12 years ago
Installing Apache and PHP on Windows 7 Home Premium on a Gateway NV75S laptop with a quad AMD A6-3400M

All I need to do with these programs is to test my website out on my laptop. I have HTML and PHP files. I do not need MySQL as I use html5 storage.

Getting and installing Apache

1 In your browser go to h t t p : / / h t t p d . a p a c h e . o r g / d o w n l o a d . c g i
(without the spaces)
2 Click on httpd-2.2.22-win32-x86-no_ssl.msi
(this is a self-installing executable file without crypto ... no Secure Socket Layer)
(2.2.22 was the latest version on April 25, 2012)
3 Click on the httpd-2.2.22-win32-x86-no_ssl.msi file after it downloads
(single click on the file tab in Chrome or double click on the actual file in Downloads)
4 Click Next
5 Click I accept the terms in the license agreement
6 Click Next
7 Click Next
8 Type localhost in the top box
9 Type localhost in the middle box
10 Type admin@localhost.com in the bottom box
11 Click Next
12 Click Next
13 Click Next
14 Click Install and wait
15 Cick Yes to allow the program to make changes
16 Click Finish

Testing Apache

1 Type localhost in your browser location box (I use Chrome) or type h t t p : / / l o c a l h o s t
(without the spaces)
2 The message It works! should appear.

Getting and installing PHP

1 In your browser go to h t t p : / / w i n d o w s . p h p . n e t / d o w n l o a d /
(without the spaces)
2 Click on the Installer link under PHP 5.3 (5.3.10) VC9 x86 Thread Safe
(Ignore the Do NOT use VC9 version with apache.org binaries comment on the side panel)
3 Click on the php-5.3.10-Win32-VC9-x86.msi file after in downloads
(single click on the file tab in Chrome or double click on the actual file in Downloads)
4 Click Next
5 Click I accept the terms in the License Agreement
6 Click Next
7 Click Next
8 Click Apache 2.2.x Module
9 Click Next
10 Click Browse
11 Double click Apache Software Foundation
12 Double click Apache 2.2
13 Double click conf
14 Click OK
15 Click Next
16 Click Next
17 Click Install and wait
18 Cick Yes to allow the program to make changes
19 Click Finish

Testing PHP with Apache

1 Open Notepad
2 Type 'left bracket character'?php phpinfo(); ?'right bracket character'
3 Save the file to C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs as test.php
4 Type localhost/test.php in your browser location box (I use Chrome) or type h t t p : / / l o c a l h o s t / t e s t . p h p
5 A table with title PHP Version ... should appear

DONE
up
3
farinspace
14 years ago
Running PHP under FastCGI:

Besides the following in your httpd.conf

LoadModule fcgid_module modules/mod_fcgid.so
FcgidInitialEnv PHPRC "c:/php"
AddHandler fcgid-script .php
FcgidWrapper "c:/php/php-cgi.exe" .php

Remember to add the following to the default <Directory "C:/apache/htdocs"> block (or virtual host blocks):

Options ExecCGI
up
-1
horica78 at yahoo dot com
6 months ago
This for the fastest architecture of Apache on Windows faster than as module for php

Enable mod_proxy and mod_proxy_fcgi in httpd.conf and run
setx PHP_FCGI_CHILDREN "15" /m
setx PHP_FCGI_MAX_REQUESTS "1000" /m
and download
RunHiddenConsole.exe and start php with c:\hidden\RunHiddenConsole.exe C:\PHP\php-cgi.exe -b 127.0.0.1:9000 and set on VirtualHost :
<Files ~ "\.(php|phtml)$">
SetHandler "proxy:fcgi://127.0.0.1:9000#"
ProxyFCGIBackendType GENERIC
ProxyFCGISetEnvIf "true" SCRIPT_FILENAME "C:%{reqenv:SCRIPT_FILENAME}"
</Files>
retar the Apache service and have fun. Cheers from one huge fan of
up
0
a user
8 years ago
If you are having issues getting the PHPIniDir or LoadModule directives to work and all the suggestions already given do not help, double-check if you are not using fancy quotes around your paths (‘ ’ “ ”).

This happened to me because I copied the statements from a random website. In my text editor the difference was barely noticeable, but to Apache it certainly is!

For example, this will not work:
PHPIniDir “C:/PHP7”

But this will work:
PHPIniDir "C:/PHP7"
To Top