PHP 8.4.0 RC2 available for testing

Apache 2.x en Microsoft Windows

Esta sección contiene notas y sugerencias específicas de Apache 2.x instaladas con PHP en sistemas Microsoft Windows.

Nota:

Se debe leer primero el manual de instalación PHP en Windows

Se recomienda consultar la » Documentación de Apache para obtener un conocimiento básico del servidor Apache 2.x. También considere leer las » notas específicas para Windows para Apache 2.x antes de seguir leyendo.

Descargue la versión más reciente de » Apache 2.x y una versión adecuada de PHP. Siga los pasos del manual de instalación y regrese para continuar con la integración de PHP y Apache.

Hay tres formas de configurar PHP para que funcione con Apache 2.x en Windows. PHP se puede ejecutar como controlador, como CGI o bajo FastCGI

Nota: Recuerde que cuando agrega rutas como valores en los archivos de configuración de Apache en Windows, todas las barras invertidas tal como c:\directory\file.ext deberían ser convertidas en barras comunes: c:/directory/file.ext. Una barra común al final será necesaria para directorios.

Instalación como un controlador de Apache

Para cargar el módulo PHP en Apache 2.x las siguientes líneas en el fichero de configuración httpd.conf de Apache deben ser añadidas:

Ejemplo #1 PHP y Apache 2.x como controlador

#
LoadModule php8_module "c:/php/php8apache2_4.dll"
AddHandler application/x-httpd-php .php
# configure the path to php.ini
PHPIniDir "C:/php"

Nota: Recuerde, la ruta real de PHP debe sustituirse por C:/php/ en los ejemplos anteriores. Asegúrese que el fichero al que hace referencia en la directiva LoadModule está en la ubicación especificada, y utilize php7apache2_4.dll para PHP 7, o php8apache2_4.dll para PHP 8.

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: La configuración anterior permitirá el manejo de PHP de cualquier fichero que contenga la extensión .php, incluso si hay otras extensiones de fichero. Por ejemplo, el fichero llamado example.php.txt será ejecutado por el controlador PHP. Para garantizar que solo se ejecuten los ficheros que terminen en .php, utilice la siguiente configuración:

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

Ejecución de PHP como CGI

Se recomienda consultar la » documentación de Apache CGI para una comprensión más completa de la ejecución de CGI en Apache.

Para ejecutar PHP como CGI, deberá colocar los ficheros php-cgi en un directorio designado como directorio CGI utilizando la directiva ScriptAlias.

Será necesario colocar una línea #! en los ficheros PHP, que apunte a la ubicación del binario PHP:

Ejemplo #2 PHP y Apache 2.x como CGI

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

Advertencia

Al usar el modo CGI, su servidor esta expuesto a diferentes ataques. Por favor, leer la sección Seguridad con CGI para aprender cómo defenderse de estos ataques.

Ejecutando PHP bajo FastCGI

Ejecutar PHP bajo FastCGI tiene una serie de ventajas con respecto a ejecutarlo bajo CGI. Configurarlo de esta manera es bastante sencillo:

Descargue mod_fcgid desde » https://www.apachelounge.com. Los binarios de Win32 están disponibles para descargar desde ese sitio. Instale el módulo de acuerdo con las instrucciones que lo acompañarán.

Configure su servidor web como se muestra a continuación, teniendo cuidado de ajustar cualquier ruta que reflejen la forma en que ha instalado las cosas en su sistema particular:

Ejemplo #3 Configurar Apache para ejecutar PHP como FastCGI

LoadModule fcgid_module modules/mod_fcgid.so
# ¿Dónde está el fichero php.ini?
FcgidInitialEnv PHPRC        "c:/php"
AddHandler fcgid-script .php
FcgidWrapper "c:/php/php-cgi.exe" .php
Los archivos con una extensión .php ahora serán ejecutados por el contenedor PHP FastCGI.

add a note

User Contributed Notes 5 notes

up
42
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
13 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
0
horica78 at yahoo dot com
4 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