- Estréllate y Arde - https://www.estrellateyarde.org -

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:

Hola mundo PHP

Si miramos el código fuente de la página comprobaremos que no se ve el código PHP, sino sólo HTML.

Hola mundo PHP fuente


Article printed from Estréllate y Arde: https://www.estrellateyarde.org

URL to article: https://www.estrellateyarde.org/discover/php-en-linux

Copyright © 2010 Estrellate y Arde