Soporte para PHP en Apache
PHP (PHP Hypertext Pre-processor, php.net, paquete php5) es un lenguaje de programación usado frecuentemente en la creación de sitios web. Es un lenguaje embebido en el HTML, interpretado, que se ejecuta en el lado del servidor, que permite crear páginas dinámicas, usar cookies, sesiones, acceder a bases de datos, etc. Hay que destacar que el código PHP no lo podrá ver el usuario aunque intente descargar el .php, ya que el servidor envía sólo código HTML.
Equivalencias en Windows: ASP.
Para configurar PHP editaremos el archivo /etc/php5/apache2/php.ini. Veamos algunas de las principales directivas:
- la directiva register_globals controla la creación de variables globales. Debe
estar Off, ya que en nuestros scripts no debemos usar variables globales (en PHP6
desaparece esta directiva y register_globals queda establecida a Off,
por lo que si en nuestros scripts usamos variables globales tendremos que reescribirlos):
register_globals = Off
En PHP una variable var puede venir de diferentes fuentes: GET (si forma parte de la URL), POST (formulario con method=post)... Si tenemos register_globals = On en todos los casos se creará una variable global $var sin controlar de dónde y hacia dónde va cada variable, suponiendo esto un grave riesgo de seguridad.
Poniendo register_globals = Off evitaremos que PHP cree automáticamente variables globales $var y accederemos a las variables mediante arrays superglobales ($_GET['var'], $_POST['var']...), según el método de envío. De esta manera conseguimos dos cosas:
- aislamos las variables internas de los scripts de las externas.
- filtramos las variables externas según el método de envío.
Así impedimos que una variable GET pasada en la URL suplante a una de nuestras variables internas o a una de nuestras variables POST.
- la directiva doc_root indica el directorio de nuestra web:
doc_root = /var/www
- para poder incluir ficheros con include ubicados en directorios
distintos del especificado en doc_root, pondremos:
allow_url_fopen = On
Los directorios donde PHP buscará los ficheros a incluir se especifican en la directiva include_path (separados por ":"):
include_path = ".:/var/www:/var/www/php"
- para trabajar con sesiones descomentaremos la línea:
session.save_path = /var/lib/php5
- en servidores en producción desactivaremos los mensajes de error en el browser:
display_errors = Off
y los mandaremos a syslog:
log_errors = On error_log = syslog
Guardamos los cambios en /etc/php5/apache2/php.ini e informamos a Apache de que tenemos PHP:
- comprobaremos que existe el archivo /etc/apache2/mods-enabled/php5.conf, cuyo contenido es:
<IfModule mod_php5.c> AddType application/x-httpd-php .php .phtml .php3 AddType application/x-httpd-php-source .phps </IfModule>
La primera línea le dice a Apache que los archivos con extensión .php debe interpretarlos como PHP.
La segunda línea sirve para que al abrir una página .phps Apache muestre el código PHP resaltando la sintaxis en color, útil por ejemplo para mostrar el código fuente de una página.
- comprobaremos que existe el archivo /etc/apache2/mod-enabled para que Apache cargue el
módulo de PHP:
LoadModule php5_module /usr/lib/apache2/modules/libphp5.so
- editamos /etc/apache2/mods-enabled/dir.conf y le decimos a Apache que como página
por defecto también sirve index.php:
DirectoryIndex index.html index.htm index.cgi index.php
Guardamos los cambios y reiniciamos Apache:
# /etc/init.d/apache restart
Comprobaremos si hemos instalado PHP correctamente poniendo en el directorio de la web (/var/www) la página en PHP más sencilla, Hola mundo. El archivo hello.php contiene lo siguiente:
<?php echo "<html>\n"; echo "<head>\n"; echo "<title>Hola mundo</title>\n"; echo "</head>\n"; echo "<body>\n"; echo "<h1>Hola, mundo.</h1>\n"; echo "</body>\n"; echo "</html>\n"; ?>
Si todo está correcto, al abrir http://127.0.0.1/hello.php en el navegador veremos lo siguiente:
Si miramos el código fuente de la página comprobaremos que no se ve el código PHP, sino sólo HTML.
2 Comentarios en “Soporte para PHP en Apache”
Deja un comentario
Hola muy buenas, lo que pasa es que estoy haciendo un sistema en php que lo que hace es dar altas, bajas y consultas de catalogo de equipos en windows y lo quiero pasar a linux, la pregunta que les quiero hacer es que si no habria problema a la hora ejecutarlo en linux, porfavor respondan, muchas gracias…
excelente tutorial, pero lo segui al pie de la linea, y no logro ejecutar los archivos .php en el navegador, tan solo me ofrece la opcion de guardarlos pero no los ejecuta. tengo php5 instalado, los modulos tambien estan en sus directorios pero en /etc/apache2/apache2.conf no aparece ninguna informacion relacionada a php.
estoy trabajando con ubuntu 8.04