viernes, 5 de septiembre de 2014

Configuración PHP en Apache

La siguiente documentación se aplica para el servidor web Apache 2.2+ y PHP 5.3 o superior. Se ha de suponer que ya se tiene instalado tanto el servidor Apache (ver instalación) como el compilador del lenguaje de programación PHP (ver instalación).

Existen tres formas distintas de configurar PHP para trabajar con Apache. La primera es configurar PHP como un controlador de Apache, la segunda configurarlo como CGI, y la tercera como FastCGI.

Windows 7/8


PHP como controlador de Apache (handler)


Para configurar PHP como handler se deben agregar las siguientes líneas de código al archivo httpd.conf del Apache.

# Cargar PHP
LoadModule php5_module "c:/php-5.5.12/php5apache2_4.dll"
AddHandler application/x-httpd-php .php

# Configurar la ruta de php.ini
PHPIniDir "C:/php-5.5.12"

En este caso se ha utilizado la ruta c:\php-5.5.12 de acuerdo a nuestra versión de PHP y a la instalación que hemos hecho en Instalación PHP. Debemos asegurarnos que el archivo php4apache2_4.dll exista en este directorio. Posteriormente, si no lo hemos hecho antes, configuramos la zona horaria y el directorio raíz en el fichero php.ini.

doc_root = c:\inetpub\wwwroot
date.timezone = "America/Bogota"

El directorio raíz viene por defector direccionado al directorio c:\php-5.5.12\htdocs, si deseas cambiarlo deberás agregar la primera línea, en caso contrario solamente la segunda. Para verificar que todo se ha configurdo correctamente iniciarmos el servicio de apache, creamos un archivo llamado phpinfo.php en el directorio raíz y vamos a la dirección URL http://localhost/phpinfo.php. El archivo deberá contener la siguiente línea de código:

<?php phpinfo() ?>

Y deberá visualizarse de la siguiente manera en el navegador


La configuración de php mostrará en la directiva Server API el valor Apache 2.0 Handler.

PHP como CGI


CGI (Common Gateway Interface) define un camino para ejecutar aplicaciones externas denominadas scripts. Con las configuración adecuada no solamente podremos ejecutar aplicaciones PHP sino cualquier otra aplicación que soporte scripting como en Perl, Python, entre otros. Para poder ejecutar aplicaciones CGI debemos tener configurado el Apache para permitir la ejecución de scripts por CGI. Esto se logra de varias maneras.

ScriptAlias


La directiva ScriptAlias le comunica a Apache que un directorio ha sido configurado para ejecutar programas CGI y por ende, todo fichero situado en este directorio será ejecutado como CGI. Para lograr esto debemos agregar la siguiente línea de código al archivo de configuración httpd.conf.

ScriptAlias /cgi-bin/ c:/Users/youruser/Documents/cgi-bin

Por lo general el directorio en donde se encuentran los programas CGI es un directorio externo al DocumentRoot definido en el mismo httpd.conf.

CGI fuera de los directorios ScriptAlias


Como se vio anteriormente, la ejecución de programas CGI está restringida a la directiva ScriptAlias por razones de seguridad. Sin embargo, si se toman las medidas de seguridad adecuadas puede permitirse la ejecución de scripts CGI en cualquier directorio. Para lograr esto debe habilitarse la directiva AddHandler o SetHandler y especificar ExecCGI en las opciones de directiva.

En el archivo httpd.conf especificamos que extensiones están habilitadas para scripts CGI.

AddHandler cgi-script .cgi .pl

En el archivo principal de configuración del servidor

<Directory c:/apache2/htdocs/algundirectorio>
   Options +ExecCGI
</Directory>

Para habilitar la ejecución de scripts CGI a cualquier usuario del sistema agregamos la siguiente directiva

<Directory c:/Users/*/Documents/public_html>
   Options +ExecCGI
   AddHandler cgi-script .cgi .pl
</Directory>

Archivos .htaccess


Finalmente si no se tiene acceso al archivo de configuración httpd.conf en el servidor se puede lograr la ejecución de script CGI mediante archivos .htaccess. Puedes visitar el siguiente tutorial directamente en la página de Apache (VER TUTORIAL).

PHP como FastCGI


Ejecutar PHP bajo FastCGI tiene varias ventajas sobre instalarlo como CGI. Para configurar PHP como FastCGI debe seguir las siguientes instrucciones:

1. Descargar el módulo de Apache mod_fcgid directamente desde la página de Apache (DESCARGAR) e instalarlo de acuerdo a sus instrucciones de instalación.

2. Configurar el servidor web tal como se muestra a continuación

LoadModule fcgid_module modules/mod_fcgid.so


# Directorio en donde se encuentra php.ini
FcgidInitialEnv PHPRC  "c:/php" 

AddHandler fcgid-script .php
FcgidWrapper "c:/php/php-cgi.exe" .php

Después de esto los archivos con extensión .php serán ejecutados bajo FastCGI.


Referencias

- PHP: Apache 2.x on Microsoft Windows - Manual. (2014, 5 de Septiembre). PHP: Hypertext Preprocessor. Fecha de consulta: 19:08, Mayo 9, 2014 desde http://php.net/manual/en/install.windows.apache2.php
-Apache Tutorial: Dynamic Content with CGI. (2014, 5 de Mayo). The Apache Software Foundation. Fecha de consulta: 7:08, Septiembre 5, 2014 desde http://httpd.apache.org/docs/current/howto/cgi.html

No hay comentarios:

Publicar un comentario