Configuración de PHP con Apache en Windows, como CGI

Aprende cómo configurar PHP y Apache para que trabajen conjuntamente en un sistema Windows. Instalación como CGI.
El presente artículo trata de cómo configurar PHP y Apache para que trabajen conjuntamente en un sistema Windows. Además, este articulo asume que hay un servidor Apache configurado en el Windows, y que funciona correctamente.

Nota: Si deseamos conocer las distintas posibilidades para la instalación de PHP en los distintos sistemas operativos y servidores, puede ser de utilidad la lectura del artículo Instalación de PHP en nuestro servidor.

Existen dos formas de configurar PHP para trabajar con Apache, instalar como un módulo o instalar como un CGI. En este artículo vamos a ver cómo instalarlo com CGI, aunque disponemos de otro artículo para instalar PHP como módulo en Apache.

Para instalar PHP como un CGI hay que seguir los siguientes pasos:

En primer lugar, hay que descargarse PHP desde la página de php.net. Existen dos versiones, una que tiene un instalador, y otra que es un fichero ZIP. Hay que descargarse esta última.

Una vez descargado, hay que descomprimirlo dentro de una carpeta, esta no tiene que estar bajo el árbol de directorios de Apache. El artículo asumirá que se descomprime dentro de la carpeta C:PHP. Comprobar que los contenidos del archivo ZIP no quedan en un subdirectorio de la carptea C:PHP, sino directamente en dicha carpeta.

Dentro de la carpeta c:PHP se encuentra un fichero llamado PHP4ts.dll, hay que mover el fichero dentro de la carpeta: c:windowssystem ó c:winntsystem

En este fichero se encuentra toda la configuración de PHP, y las modificaciones en la configuración de PHP (mostrar Errores, variables globales etc...) se encuentra dentro del mismo.
Es muy recomendable cambiar la directiva display_errors que por defecto esta en OFF, y pornerla en ON, para poder ver los errores que se producen en las páginas durante el desarrollo. Para un servidor en producción en conveniente dejarla en OFF.

Una vez se han hecho estos cambios, queda indicarle al Apache, donde se encuentra instalado el PHP, para ello hay que editar el fichero httpd.conf que se encuentra dentro de la carpeta conf, en la carpeta de instalación del apache (por defecto c:archivos de programaapache groupapache2conf)

Abrir el fichero, y situarse al final del mismo, y escribir las siguientes líneas:

ScriptAlias /php/ "c:/php/"
AddType application/x-httpd-php .php
Action application/x-httpd-php "/php/php.exe"

En ellas se indica donde se encuentra el ejecutable de php, y lo asocia a los ficheros .php que se encuentren dentro de apache.

A continuación reiniciar el servidor Apache, y ya esta!

Por último, indicar que para probar la nueva instalación, es recomendable crear un fichero php con el siguiente contenido:

<? phpinfo();?>

Luego lo guardamosdentro de la carpeta raíz de documentos del Apache (por defecto c:archivos de programaapache groupapache2htdocs ), con un nombre terminado en .php, por ejemplo info.php

Para ejecutarlo, a través de un navegador, escribir la dirección http://localhost/info.php.
Debería aparecer una pantalla como la que se muestra a continuación.

Si la vemos correctamente es que todo ha ido bien y que tenemos perfectamente instalado PHP en nuestro servidor Apache.

Nota: Este tipo de instalación de PHP sobre Apache es poco recomendada por motivos de seguridad. Podemos seguirla para configurar PHP en local, con intención de desarrollar nuestras páginas web, pero nunca si vamos a utilizar el servidor en un entorno de producción, es decir, en un servidor que se encuentre permanentemente conectado a Internet sirviendo páginas a todo tipo de usuarios.

Sería necesario instalar PHP como un módulo de Apache, en lugar de CGI, para dotar al sistema de una mayor seguridad, y también más potencia.

Referencia: En esta FAQ damos otras opciones para la instalación de PHP, utilizando programas que permiten instalar y configurar Apache + PHP + MySQL en un sencillo paso, accesible para todos los usuarios: Cómo instalar PHP en Windows.

Compartir

Comentarios

Fernando Cuadrado

17/3/2003
ATENCION!! Esta manera de instalar el PHP es conciderada un SUICIDIO en el archivo install.txt que viene en PHP4.

Tambien dice que es aconsejable poner un nombre aleatorio al Script /php/

RESPUESTA

Es cierto que no es segura esta manera de instalar PHP, así que no se aconseja para un servidor en producción, además tampoco es muy recomendable instalar Apache sobre Windows, ya que, aunque para la versión 2 de Apache se ha creado un módulo específico, este adolece de ciertos problemas de seguridad.

De todos modos, esta instalación es perfectamente válida para el desarrollo de vuestros sitios web en local, es decir, para un servidor de desarrollo y que no está expuesto a posibles ataques.

Nota: en la sección de FAQs explicamos lo que es un servidor de desarrollo y un servidor en producción. También se puede conocer el proceso de instalación de PHP como módulo de Apache, que soluciona los problemas de seguridad a los que te refieres.

Elena DP

09/5/2003
Si queremos poner PHP como modulo (no como CGI) estando PHP4ts.dll y php4apache2.dll en la carpeta c:\php\sapi es suficiente y NO es necesario copiarlos a c:\winnt\system32.

Con respecto a las modificaciones al httpd.conf de Apache2.x NO es necesario lo del ScriptAlias, basta con poner lo del LoadModule y AddType

Elena DP

09/5/2003
La forma descrita en el articulo es para poner PHP como CGI. Creo que deberías comentar la forma de poner PHP como módulo.

Fabian Mestre Socarras

09/9/2003
Yo he configurado Apache y PHP bajo windows manualmente y me parece bien aprender primero de es amanera, pero me gustaría informarle a toda la comunidad la existencia de unos instaladores automaticos como el Appserv y el Foxserv, que instala facilmente Apache, PHP y MySQL en un solo proceso y sin configurar nada. Esto solo existe para windows astimosamente, para ambientes Linux ya hay que mirar los archivos INSTALL de cada paquete. Gracias.

Mak

22/9/2003
Hola, me gustaría haceros una sugerencia. ¿Podríais poner el modo de configurar PHP para que funcione con el Apache en Windows2000, pero en modo SAPI?
Gracias.
M@k

victor

26/9/2003
Si quieres utilizar tanto ASP como PHP bajo windows XP, es mejor tener instalado tanto Apache como IIS(aunque como sabria que servidor actuar dependiendo de la página que queramos mostrar) o con IIS para los dos es suficiente??

RESPUESTA:

Lo que está claro es que debes tener el IIS para poder programar en ASP. A partir de aquí, si también quieres utilizar el Apache para PHP puedes hacerlo, pero no es necesario dado que el IIS puede entender también PHP. Cualquiera de las dos soluciones es buena.

Un saludo y espero haber resuelto tus dudas.

Sergio Rozalén

31/8/2004
El articulo es fantastico. Solo un apunte. Yo he montado PHP 5 con Apache 2.0.50 y hay que matizar un par de cosas.
l ini en la carpeta PHP no está.
Y el nombre del exe es distinto (php-cgi.exe). Haciendo esos retoque se configura perfecto.

Espero que está experiencia os ayude.
Un saludo.

PRICE

11/3/2005
Yo tengo una pequeña dura, ¿es nesesario q el apache este instalado en nuestro odenador? ¿o se puden instalar en un servidor gratuito? Lo pregunto por que a mi me seria muy costoso instalarlo en mi ordenador, y tengo un espacio web gratuito de 100MB de espacio.

Leandro Jauande

26/5/2005
Si estamos instalando PHP 5.0.4 veremos que el archivo DLL es php5ts.dll esta en la carpeta C:PHP si estamos siguiendo los pasos.
Y en el httpd.conf debemos al final agregar estas lineas

ScriptAlias /php/ "c:/php/"
AddType application/x-httpd-php .php
Action application/x-httpd-php "/php/php-cgi.exe"

Varia del original en que apunta a otro ejecutable.-
Esto es por que está versión del PHP trae 3 ejecutables, si ponemos como esta en el articulo original no funciona, pero modificandolo como escribi arriba funciona muy bien.-

Espero este aporte sea de ayuda.-

Salu2 Leandro.-

JAIR DIEZ

28/3/2006
INSTALAR PHP COMO CGI NO ES MUY RECOMENDABLE, PERO ES MUY PRACTICO YA QUE CONCES EL FUNCIONAMIENTO INTERNO. ACONSEJO INSTALAR PHP COMO MODULO DE APACHE.

Elian

15/5/2006
he hecho todo eso.. pero cunado entro desde el Firefox me aparece esto:

Forbidden

You don't have permission to access /php/php.exe/info.php on this server.

NICOLAS (México)

21/9/2006
Price, seguramente ya esta resuelta tu pregunta desde hace ya casi un año que la publicaste pero me gustaría aún así responderla para que la gente que esta investigando encuentre la respuesta.

No es necesario instalar el apache/php/mysql en tu máquina ya que puedes trabajar con algun servidor gratuito que ya lo tenga instalado y funcionando, pero es muy recomendable hacerlo ya que cuando estas realizando un sitio normalmente haces alguna modificación a tu código y lo pruebas para asegurarte que esta bien hecho, por lo que imaginate si estas programando tendrías que estar subiendo el archivo modificado al servidor gratuito y probarlo, en vez de nada mas verificarlo directamente en tu computadora. Al final de cuentas el sitio lo tienes que subir a un servidor de paga o gratuito para que sea publicado, pero esto lo haces cuando ya esta todo funcionando y listo para ser publicado.

Klau

25/11/2006
para que no de el error You don't have permission to access /php/php.exe/test.php on this server"
hay que hacer lo sgate. en httpd.conf al final del mismo agregar como se menciono en el articulo:

ScriptAlias /php/ "c:/php/"
AddType application/x-httpd-php .php
Action application/x-httpd-php "/php/php-cgi.exe"

mas los permiso del nuevo alias que es lo que sigue

<Directory "C:/php">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks

#
# 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

#
# Controls who can get stuff from this server.
#
Order allow,deny
Allow from all

</Directory>

eso es todo. a mi me funciono buy bien
espero les sea de utilidad

Manuel Paz

14/4/2007
El tutorial es muy bueno solo quiero añadir que para la versión 2.2.4 de Apache y php 5.2.1 el directorio php/sapis no existe todo lo que tenga que ver con copiar archivo de o hacia dicho directorio deberá de ser hacia php/ext y en lugar de usar php4apache2.dll hay que usar php5apache2_2.dll

Saludos

ZequeZ

15/9/2007
Es muchisimo mas facil usar el XAMPP, que tiene todo el pack re bien hecho y te viene con muchas herramientas. Al principio, cuando no sabia ni como era lo de localhost, no entendia ni medio, veia en la ventanita que decia apache, y mysql y me imaginaba un mapache, que se yo xD

diego

08/10/2008
a mi me funciono ok

Manson

06/11/2008
Y en el 2008 como se hace.?

Manson

06/11/2008
Y LA CHEYENNE, APA?

uziel

25/12/2008
-.- por que no me sale ni un archivo con el nombre php5ts.dll, estoy siguiendo los pasos y no veo ni un archivo con ese nombre

susana

06/1/2009
Quiero descargar un archivo que adjunte y guarde en una carpeta del servidor y me da el error "Forbidden" (que no tengo permisos en este servidor) y no se que hacer. Si alguin me puede ayudar se lo agredecere.

Andreas ellerbrock

01/2/2009
yo tuve un problema al editar el archivo httdp de apache porque cuando lo guardo me aparece que no se encontro el archivo y que no lo puedo sobreescribir...AYUDA!!!!

Carlos Ulate

02/4/2009
Gracias por este articulo, me has salvado la vida, tenía 2 semanas tratandolo de hacer!!!! Y hasta ahora pude!!!!

RODLON

18/5/2009
Forbidden You dont have permission to access
Hola.
Al abrir localhost/prueba.php me sale ese mensaje de You don't have permission to access /php/php/prueba.php on this server.

He probado a hacer lo que dice en un comentario anterior de poner eso del permiso del directorio y tambien a cambiar el nombre del ejecutable(porque he puesto el php 5) y sigue saliendo. que puede ser?

Ever Salazar

12/6/2009
pregunta
Quiero saber si yo estando desconectado de internet, pero teniedo instalado php con apache, puedo hacer mi programacion y ver mis pantallazos. Esto porque a pesar de que lo dicen en el manual, quiero estar seguro.

Ever Salazar

12/6/2009
INFORMAME
¿Què versiones trabajan mejor entre apache y php?. Estoy un poco desorientado.4

HD

18/8/2009
COMO hAgo el fichero PHP
yo hise el ficher en wordpad y en el blog de notas y lo guarde en la carpeta que dice, bajo el nobre de info.php y al buscarlo en el navegador
me marca not found

entoces como hago el fichero .php

Alex

13/9/2009
acaso son peruanos
si no saben lo que hacen, es de muy mal gusto que se la esten dando de maestro sugiriendo instalciones, cuando no saben donde tienen puesto el culo.
hacen perder tiempo imbeciles.

Jose Luis Padilla Pereira

14/11/2009
no me muestra la pantalla
hice lo que dijo Klau pero en vez de mostrarme la pagina que muestra en el tutorial, no me muestra nada, aparece la pantalla en blanco, estara bien que aparezca asi?

Yefrin

30/12/2009
Instalacion de PHP, apache y Postgresql
Hola amigos, necesito ayuda para instalar y configurar PHP, Apache y Postgresql en Windows, he buscado ayuda y solo he encontrado ayuda para Linux, lamentablemente en mi trabajo se usa un servidor Windows NT Server, asi que necesito con urgencia los pasos para configurar esta combinacion, tambien encontre una aplicacion llamada Wappo, sin embargo no confio mucho en ella, ya que no es seguro si se utilizan las ultimas versiones de Apache, PHP o Postgresql, ademas no me garantizan que PHP contenga todas las librerias que necesito, espero me ayuden pronto. Les agradesco mucho su ayuda de antemano. Gracias y que Dios los Bendiga!!!!!!

Cesar Herrera

03/3/2010
Para los que quieren instalar PHP 5.2.13
Pues yo queria instalar PHP 5 para usar joomla, al final del conf me quedo
ScriptAlias /php/ "C:/AppServ/php5/"
AddType application/x-httpd-php .php
Action application/x-httpd-php "/php/php-cgi.exe"

<Directory "C:/AppServ/php5/">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
funciono pára mi
Saludos

NIGASO

24/6/2010
GRACIAS
Te luciste Klau, llevaba ya mucho rato intentado montar php 5.3.2 sobre el apache 2.x y el forbidden me tenia fustrado. gracias.

NIGASO

24/6/2010
php sobre apache
Gracias klau, te luciste con ese aporte. Me funciono muy bien

magdalena

22/10/2010
error 403
Hola. Yo he instalado el AppServ 2.5.9 en mi ordenador (con Apache, MySql y PHP) y funciona hasta que me da el error 403 , prohibición de acceso a los archivos cgi-bin.
Alguien me puede dar una solucion, POOORFAA!

dario

23/4/2011
problemas instalar php en wondows vista
instale apache server 2.2 y php 5.2.17 como cgi, sigo los pasos pero cuando ejecuto el info.php sale el sgte mensaje: You don't have permission to access /php/php-cgi.exe/info.php on this server. soy novato en todo esto asi que necesito una ayuda. gracias.

dario

07/5/2011
auyda
porque no responden a mi comentario??? por favor pues no puedo avanzar.

Esteban

27/7/2011
Hay que utilizar php-cgi.exe
Me fue muy util, gracias!
Lo unico que me dio dolor de cabeza fue no darme cuenta que para instalar CGI habria que haber usado Action application/x-httpd-php "/php/php-cgi.exe" en el conf httpd, sino tenia error 500

Danilo

10/8/2011
No encuentro archivo de configuracion
Yo he seguido los pasos de descargar el archivo zip y descomprimirlo en la carpeta C:php, pero luego no encontré en la misma el archivo php4ts.dll (o php5ts.dll en mi caso que he descargado la versión 5) que es lo que pudo haber pasado? el archivo se descargo correctamente.

Gracias por su ayuda, esta web es realmente completa y satisfactoria.