suche nach in der

Sun, iPlanet and Netscape servers on Microsoft Windows> <Apache 1.3.x on Microsoft Windows
Last updated: Sat, 07 Jan 2012

view this page in

Apache 2.x on Microsoft Windows

This section contains notes and hints specific to Apache 2.x installs of PHP on Microsoft Windows systems. We also have instructions and notes for Apache 1.3.x users on a separate page.

Hinweis:

You should read the manual installation steps first!

Hinweis: Apache 2.2 Support

Users of Apache 2.2 should note that the DLL file for Apache 2.2 is named php5apache2_2.dll rather than php5apache2.dll and is available only for PHP 5.2.0 and later. See also » http://snaps.php.net/

You are strongly encouraged to consult the » Apache Documentation to get a basic understanding of the Apache 2.x Server. Also consider reading the » Windows specific notes for Apache 2.x before reading on here.

Apache 2.x is designed to run on the Windows version designated as server platforms, such as Windows NT 4.0, Windows 2000, Windows XP, or Windows 7. While Apache 2.x works tolerably well on Windows 9x, support on these platforms is incomplete, and some things will not work correctly. There is no plan to remedy this situation.

Download the most recent version of »  Apache 2.x and a fitting PHP version. Follow the Manual Installation Steps and come back to go on with the integration of PHP and Apache.

There are three ways to set up PHP to work with Apache 2.x on Windows. You can run PHP as a handler, as a CGI, or under FastCGI.

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.

Installing as an Apache handler

You need to insert the following lines into your Apache httpd.conf configuration file to load the PHP module for Apache 2.x:

Beispiel #1 PHP and Apache 2.x as handler

# 
LoadModule php5_module "c:/php/php5apache2.dll"
AddHandler application/x-httpd-php .php

# configure the path to php.ini
PHPIniDir "C:/php"

Hinweis: Remember to substitute your actual path to PHP for the C:/php/ in the above examples. Take care to use either php5apache2.dll or php5apache2_2.dll in your LoadModule directive and verify that the referenced file is in fact located at the file path that you point to in this directive.

The above configuration will enable PHP handling of any file that has a .php extension, even if there are other file extensions. For example, a file named example.php.txt will be executed by the PHP handler. To ensure that only files that end in .php are executed, use the following configuration instead:

<FilesMatch \.php$>
      SetHandler application/x-httpd-php
 </FilesMatch>

Running PHP as CGI

You should consult the » Apache CGI documentation for a more complete understanding of running CGI on Apache.

To run PHP as CGI, you'll need to place your php-cgi files in a directory designated as a CGI directory using the ScriptAlias directive.

You will then need to insert a #! line in the PHP files, pointing to the location of your PHP binary:

Beispiel #2 PHP and Apache 2.x as 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.

Running PHP under FastCGI

Running PHP under FastCGI has a number of advantages over running it as a CGI. Setting it up this way is fairly straightforward:

Obtain mod_fcgid from » http://httpd.apache.org/mod_fcgid/. Win32 binaries are available for download from that site. Install the module according to the instructions that will come with it.

Configure your web server as shown below, taking care to adjust any paths to reflect your how you have installed things on your particular system:

Beispiel #3 Configure Apache to run PHP as FastCGI

LoadModule fcgid_module modules/mod_fcgid.so  

# Where is your php.ini file?
FcgidInitialEnv PHPRC        "c:/php" 

AddHandler fcgid-script .php  
FcgidWrapper "c:/php/php-cgi.exe" .php  
Files with a .php extension will now be executed by the PHP FastCGI wrapper.



add a note add a note User Contributed Notes
Apache 2.x on Microsoft Windows
anonymousness
15-Jun-2007 04:30
Verrrrrrrry important note:

If you enable multi-byte strings for your installation of PHP, the extension loaded MUST be the first extension in the list.

Apache, NOR PHP will generate any error messages or warning information in the error log or in system logs about this.

This information needs to be included in the Readme or in the distributed INI files.

The recommended PHP ini's should place extension=php_mbstring.dll  at the top of the list of extensions.

I had completely forgotten about this when recently upgrading php on a test server; and almost set out to re-install apache.
joelwells at streamlineIT dot org
13-May-2007 01:15
I had trouble with the PHPIniDir directive, then I realized that the order of the PHP entries is key.

PHPIniDir is a directive found in the load module for php (e.g., php5apache.dll).  Therefore, the PHPIniDir directive must come after the LoadModule directive.  Otherwise, Apache has no idea what PHPIniDir is, and your Apache service will not start.
zerocredibility@hot_mail
29-Apr-2007 07:01
PHP5 and apache2_2on a  Win32 PC.

Kept getting blank screen (but could see it it with view source) with test script:

<?
phpinfo
();
?>

The problem is that the above test script uses short open tags "<?" rather than long ones "<?php" The short ones are not enabled with php.ini-recommended version but are in the php.ini-dist version...

Either change php.ini:
short_open_tag = Off #to On to use the above script

or change the script to:
<?php
phpinfo();
?>

Easy when you know how.

This is after I checked and rechecked the httpd.conf file according to the FAQs...
martin dot hansell at gmail dot com
20-Mar-2007 09:17
As a complete novice with all_things_software, I found the instructions above incomplete, in particular with respect to WHERE to add in the additional lines to the PHP configuration file... they assume a certain amount of knowledge, which left me a bit in the dark.  [See "at the foot" below for WHERE...]

In fact configuring the httpd.conf file is a piece of cake with the right instructions.  This site below (courtesy of my brother-in-law - credit where it's due) gave me the answer, and I have pasted the key information below (permission not granted but credit again due via URL to respective site)

I quote  "Next step is to open up your httpd.conf file in a text editor, wordpad or notepad, and add a few lines. The file, from the default installation is found in the X:\Program Files\Apache Group\Apache2\conf folder.

Do a search for "LoadModule" and you will see a list of modules that Apache tries to initiate when starting up. At the foot of this section, add the following 4 derivatives - each on a separate line: LoadModule; PHPIniDir; AddType; second AddType.

LoadModule php5_module "X:/Program Files/Apache Group/php/php-5.2.0-Win32/php5apache2.dll"
PHPIniDir "X:/Program Files/Apache Group/php/php-5.2.0-Win32"
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

That's it. Left-click the Apache monitor icon that should be in your task-bar and press restart. You can create a php page to test if the installation has worked. Save the following as info.php in your X:\Program Files\Apache Group\Apache2\htdocs folder assuming you haven't modified your document root."  [For "the following" you will have to refer to the site...]

http://www.skiffie.com/code/server/php-as-apache-module

It really was as simple as that...  Hope this helps.
Martin
charlie at oblivion dot cz
15-Feb-2007 01:19
..try to set the extension_dir in php.ini to the absolute path.. (when you are pretty sure that you have set the PHPIniDir the right way)
Jim Keller
11-Jan-2007 02:35
it's important to note that on Apache 2.2.3 (probably other 2.x versions as well) on Windows, the PHPIniDir directive must use forward slashes to delimit directories, not the backslashes commonly used for Windows path strings. If PHP seems to be ignoring the directive, this may be why.
gaizka at ilunabar dot net
07-Nov-2006 12:22
Apache 2.2.3 and PHP 5.2

# For PHP 5 do something like this:
LoadModule php5_module c:/php/php5apache2_2.dll
AddType application/x-httpd-php .php

# configure the path to php.ini
PHPIniDir C:/php

Remember to substitute your actual path to PHP for the c:/php/ in the above examples.
pcdinh at phpvietnam dot net
07-Oct-2006 12:50
PHP 6 is under active development but for those whose want to try out the new features or just want to keep updated with the development progress of PHP 6.0, you can follow my instructions below to install it on Windows XP and Apache 2.2.3

# For PHP 6 do something like this:
LoadModule php5_module "c:/server/php6/php6apache2_2.dll"
AddType application/x-httpd-php .php
PHPIniDir "c:/server/php6"

You should change the path as in your system. The directive LoadModule php5_module seems a bit strange to you. It should be LoadModule php6_module instead. However, I have just taken a look at php.internals and came across a message that said it should be changed in the near future after the PHP 5.2 is official released. At the time I write this, PHP 5.2 RC6 is planned to be released in the next few days.
k2wardog at yahoo dot com
06-Sep-2006 04:55
I was also having the 403 forbidden error.  Removing the trailing backslash from the script alias as well as adding the following lines solved the issue:

<Directory "C:/php">
   AllowOverride None
   Options None
   Order allow,deny
   Allow from all
</Directory>

Thanks for the help boss.
sgipyza1 at yahoo dot com
19-Aug-2006 08:58
Today I try to install PHP5.1.5 with Apache2.2.3 as a module but Apache always cannot start with Windows XP.

After  I read the user contributed notes, I found the website Apache Lounge (http://www.apachelounge.com) and got the fixes: php5apache2.dll-php5.1.x.zip  (http://www.apachelounge.com/download /mods/php5apache2.dll-php5.1.x.zip).

In the Readme First.txt, Steffen clearly documented the install steps. And it works! Thank you steffen.
subajawa at yahoo dot com
04-Aug-2006 10:56
To install PHP as Apache 2 CGI script, add these lines in addition to the 3 lines mentioned in the document.

<Directory "C:/php">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>
04-Aug-2006 10:31
There is a mistake in documentation regarding installation of PHP as Apache 2 CGI script. The ScriptAlias directive should not have trailing slash on 'php' as it then means that 'php' should be part of the URL, just like 'cgi-bin' usually is, and in case of PHP this leads to 403 Forbidden.

Instead, this is the correct directive (no trailing slash on 'php'):

ScriptAlias /php "C:/path/to/PHP/dir"
m 1 b x d at htomail dot com
10-May-2006 03:22
Indeed the references to "apachelounge" are a lifesaver!

With regards to installation :

Apache 2.2.2 and php v5.1.2 / 5.1.3 / 5.1.4

http://www.apachelounge.com/

Excellent site for these installation issues.

MX
philip at php dot net
06-May-2006 08:57
If you use Apache 2.2.x, the included DLLs (php4apache2.dll and php5apache2.dll) will not work for you as they are specific to the Apache 2.0.x API. There is an open bug report to address this issue but if you can't wait then go to the following URL and download an appropriate DLL for Apache 2.2.x:

* http://apachelounge.com/

The PHP Group does not endorse this site but it appears useful, so use it :-)
lyh@edu
05-May-2006 05:13
I had a hard time to install PHP5.1 with Apache2.2 as a module, because whenever I tried to start apache, I always got the error that "Cannot load C:/php/php5apache2.dll into server: The specified module could not be found."
I have checked that php5apache2.dll does in the right directory of "c:/php/", and I have also tried to copy some files (php5ts.dll, php.ini) into relevant directories, such as WINDOWS/, Apache2/, but none of them worked.

I then found a post http://www.apachelounge.com/forum/
viewtopic.php?t=139&view=next&sid=b8df0fe80ac524939e2553ad7ee49123
and tried as suggested by downloading a zip file created by Steffen, and followed the instructions. The apache2.2 now works fine.

BTW, I am using a XP home and folllowed the instructions on the top part of this page.
chris -dot- chaudruc -at- gmail -dot- co
15-Dec-2005 04:02
This took a while for me to figure out but hopefully it will save some time for others.

Running Apache 2, PHP 5.1.1 on Windows XP and could not get mysql library to load. Extension path was correct in php.ini and the module resided in the correct spot.

Discovered that libmysql.dll in the root php directory needs to be moved to C:\WINDOWS or be included in Windows paths in order for this module to load.

From Zend:
"Some modules depend of other libraries, like MySQL. In this case you need to copy libmysql.dll from your MySQL/bin installation directory to a directory in your PATH, like C:\WINDOWS"

Copied over the file and mysql functionality was enabled.
13-Dec-2005 12:12
There are often strong suggestions that Apache/MySQL/PHP should be set up in the Windows root folder, and dire warnings against using folders with spaces in the name. But as a relatively non-technical user, I hate cluttering my Windows XP root directory with folders that should be under Program Files, and of keeping any documents other than in "My Documents" (even though I agree that MS's folder tree is ugly).

Frankly I've never had any difficulty with Apache and MySQL under Program Files, PHP5 deep in the Apache tree, and all documents under My Docs.. Here are the related Apache 2 config lines I use in case anyone is interested (sorry if there are broken lines):

ServerRoot "C:/Program Files/Apache Group/Apache2"

DocumentRoot "C:/Documents and settings/UserNm/My Documents/Websites"

# PHP 5 module
LoadModule php5_module "c:/Program Files/Apache Group/Apache2/php5/php5apache2.dll"
AddType application/x-httpd-php .php
PHPIniDir "C:/Program Files/Apache Group/Apache2/php5/"
msonsuz at example dot com
14-Oct-2005 03:28
When you try apache using the bin directory use the command: apache -n "service_name" -t

Use for service_name the name u used. You can find the service_name also in the system tray
withheld at withheld dot com
06-Aug-2005 03:40
BTW I use Win9x to develop but it's not a production server. And yes, adding a trailing slash to the PHPIniDir directive helps.
Isaac dot Brown at ArvinMeritor dot com
17-May-2005 02:59
Some XP machines are having troubles with the PHPIniDir derective not finding the php.ini (or so they think). Directories that do contain a php.ini file are returned as empty and it defaults to the next method of finding php.ini (often C:/windows or C:/winnt).

This is likely caused by read permissions not being set correctly on NTFS file systems, however, it has occurred when no cause could be identified. If setting correct file permissions doesn't work, the easiest way around this problem is moving php.ini to the Apache directory or adding the HKEY_LOCAL_MACHINE\SOFTWARE\PHP\IniFilePath string to your registry and setting it to the correct directory.
wrowe at apache dot org
11-Apr-2005 02:26
Although the warning above reads "We do not recommend using a threaded MPM in production with Apache2" - ignore that nonsense for Win32.

All Apache/Win32 builds were *always* threaded.  Always choose Apache 2 over Apache 1.3 on Windows - because major portions of Apache 2 were written from the ground up to accept Windows.

Apache 1.3 was never designed for threads or non-posix systems.  For Windows they were squirled in with some rather ugly hacks, which will never enjoy much improvement.