viernes, noviembre 21, 2014

Apache2 + PHP + Ubuntu: Configurar carpetas de usuario para ejecutar script php desde el servidor web

Harto siempre de tener que jugar con los permisos para poder editar los archivos en /var/www estuve revisando cómo habilitar un directorio de mi espacio de usuario para hacer desarrollo en PHP.

La cosa tiene algo más de miga de lo que parece, no basta hacer un enlace simbólico o crear directamente un virtualHost porque te dará problemas con los permisos. Al final la solución más rápida que encontré fue usar "a2enmod userdir" que permite crear un directorio "public_html" en todas las carpetas de usuario.

La cosa es tal que así
 $sudo a2enmod userdir  
 $sudo service apache2 restart  
Para activar que apache2 sirva los directorios de usuario. Después creas un directorio en tu carpeta de de usuario llamado public_html y ahí puedes poner un archivo de prueba.
 $cd ~  
 $mkdir public_html  
 $echo "<?php echo 'Hello world' ?>" >> public_html/index.php  
Ahora ya puedes abrir tu navegador e ir a http://localhost/~nombreusuario/ y debería abrirte el index.php y mostrar algo como:
 <?php echo 'Hello world' ?>  
El código php aparece porque de entrada la configuración de PHP está deshabilitada por motivos de seguridad. No es preciso recordar que lo que estamos haciendo es peligroso y únicamente debería hacerse para máquinas de desarrollo que no tengan acceso del exterior.

Para habilitar el php en el directorio de usuario vamos al archivo /etc/apache2/mods-enabled/php5.conf y comentar las siguientes líneas
 #<IfModule mod_userdir.c>  
 #  <Directory /home/*/public_html>  
 #    php_admin_flag engine Off   
 #  </Directory>  
 #</IfModule>  
Reiniciar el servidor apache con
 $sudo service apache2 restart  
...et voilà! Ya ejecutamos scripts php desde nuestra carpeta de usuario.

Convertir nuestra carpeta de usuario en el directorio por defecto

Si lo que queremos es que al visitar http://localhost vaya directamente a nuestra carpeta de usuario hay que cambiar el DocumentRoot de nuestro site. Edita /etc/apache2/sites-available/000-default.conf y cambiamos la línea DocumentRoot por:
 DocumentRoot /home/usuario/public_html  
..y reiniciar de nuevo el servicio
 $sudo service apache2 restart  

No hay comentarios:

Publicar un comentario