Esto que escribo lo hago principalmente para los usuarios de DreamHost (como nuevo miembro que soy), ya que me he estado fijando en que los scripts en PHP los ejecuta como CGI por defecto y esto es algo que nunca debería permitirse, por dos razones fundamentales:
- Ejecutar PHP como CGI es muy inseguro
- Consume muchos más recursos porque se ejecuta como un programa
No es mi objetivo meterme aquí en explicaciones técnicas sobre una cosa o la otra, la idea es que PHP como CGI es malo.
Cómo saber si PHP se está ejecutando como módulo del Apache o como CGI
Si tenéis la duda, podéis crear un archivo, por ejemplo informacion.php
con el siguiente contenido:
<?php phpinfo(); ?>
Lo subís a donde tengáis vuestra web y ponéis en el navegador: http://vuestraweb.com/informacion.php
En la parte que pone Server API, pondrá CGI
(si PHP se ejecuta así) o Apache Handler
si se ejecuta como módulo del servidor Apache.
Ejecutando PHP como módulo del Apache
Tenemos la opción de ejecutar PHP como módulo del Apache (el servidor web) que es como deberíamos tenerlo ya desde un principio. Para hacer eso, tendremos que crear (si no lo tenemos) un archivo .htaccess
(nótese el punto delante del nombre, así es como en los sistemas UNIX se nombra a los archivos ocultos) con el siguiente texto:
AddHandler application/x-httpd-php .php
Y ahora lo subiremos al directorio raíz de nuestro espacio web. Podemos ejecutar otra vez el archivo informacion.php
en el navegador para ver cómo se ha cambiado.
Aunque, como dije al principio, esto lo escriba para usuarios de DreamHost, vale para todos los que tengais alguna web en algún hosting o en el servidor de casa.
Por cierto, aunque no sepáis de qué va esto del PHP, seguro que sí conocéis herramientas como WordPress, phpBB, MediaWiki, Gallery… Pues usan PHP.
Sólo para usuarios de DreamHost: al activar PHP como módulo del Apache, no tendremos disponible la versión 5 del PHP, sino la 4.4.2. Si veis que usáis alguna herramienta o habéis hecho algún script que usa alguna función nueva de la versión 5 de PHP o no existía en versiones anteriores, tendréis que volver a poner PHP como CGI, y allá vosotros 😛