Instalación y Configuración de PHP

De WikiCabal
Ir a la navegación Ir a la búsqueda

Introducción

Bienvenido(a) al curso básico en PHP de PHPCabal! En éste, haremos lo posible por instruirte en las artes del PHP y que, pronto, estarás escribiendo páginas web dinámicas y participando en los proyectos de PHPCabal.

Por lo pronto, las clases de PHP son impartidas por Richard Couture. Éstas están basadas en su clase de PHP: http://linuxcabal.org/PHPClase/; las cuales podrás encontrar, también en Clase_PHP.

Estos archivos y ejemplos son explicados por Richard mismo y son impartidas todos los Martes; a partir de las 19:00 hrs en punto. La clase de principiantes dura 30 min. Los archivos de la Clase_PHP, se pueden descargar y renombrar de archivo.phps a archivo.php para que puedan correr e ilustrar el ejemplo.

Si quieres venir al curso, te recomendamos instalar PHP antes de venir y traer tu laptop/pc. Si no puedes, acá te ayudamos.

Escribe a la lista de correo y publica tus dudas, código y demás!


Instalación

PHP está disponible en casi todas las distribuciones e GNU & Linux, MacOSX y Windows. En esta página, describiremos como instalar un LAMP (Linux, Apache, MySQL, PHP) o un MAMP (Mac OSX, Apache, MySQL, PHP) o un WAMP (Windows, Apache, MySQL, PHP).

Para más detalles sobre cada distribución o sistema operativo, consulta la documentación correspondiente en cada uno de éstos.

En LinuxCabal y, por tanto, en PHPCabal, soportamos: Fedora y Mandriva. Si deseas venir con un sistema operativo o distribución diferente a los soportados, adelante. El único requisito es que puedas correr un "Hello, world!" en tu ambiente de desarrollo. Ésto quiere decir que debes ocuparte de tu instalación y configuración por tu cuenta.

GNU & Linux

Fedora 14 o >

 su -c 'yum install @web-server @mysql-database'
 su -c 'service httpd start'

Mandriva 2010 o >

 su -c 'urpmi apache-mod_php apache apache-mpm-worker MySQL MySQL-client'
 su -c 'service httpd start'

Ubuntu 10.04 o >

 sudo aptitude install apache2 php5 libapache2-mod-php5 mysql-server php5-mysqli
 sudo /etc/init.d/httpd start

Debian 5.04 o >

Como usuario root, ejecutar el siguiente comando para instalar apache, php5 y sus dependencias:

 aptitude install apache2 php5 libapache2-mod-php5 mysql-server php5-mysql

Este comando instalara los siguientes paquetes:

apache2 apache2-mpm-prefork apache2-utils apache2.2-common libapache2-mod-php5 libapr1 libaprutil1 libdbd-mysql-perl libdbi-perl libhtml-template-perl libnet-daemon-perl libplrpc-perl libpq5 libterm-readkey-perl mysql-client-5.0 mysql-server mysql-server-5.0 php5 php5-common php5-mysql

En Debian, la configuración por defecto, configura el servidor web Apache y el servidor de base de datos MySQL para que inicien después de instalarlo y para que se ejecuten al inicializar el sistema.

Para detener la ejecucion de los servidores:

 /etc/init.d/apache2 stop
 /etc/init.d/mysql stop

Para inicializar los servidores:

 /etc/init.d/apache2 start
 /etc/init.d/mysql start


Mac OSX

Ve a: http://www.apachefriends.org/en/xampp-macosx.html y descárgalo.

Instalación

Encenderlo desde la consola de administración de xampp. Hay que desactivar/apagar skype.


Windows

Ir a: http://www.apachefriends.org/en/xampp-windows.html y descárgalo

Instalación

Encenderlo desde la consola de administración de xampp. Hay que desactivar/apagar skype.


Configuración

Para un ambiente de desarrollo sano, hay que habilitar las opciones de reporte de errores. También, en GNU & Linux, es importante configurar un ambiente de trabajo local; para evitar trabajar como root todo el tiempo.

A continuación, explicaremos cómo hacer todo esto.

Mostrar errores

Ésto es muy útil en un ambiente de desarrollo. Dicho ésto, es considerado inseguro si se va a configurar, de esta manera, en producción.

Ubicación de php.ini

Para hacer que PHP muestre los errores de ejecución, solo hay que cambiar el archivo php.ini. Éste, en GNU & Linux, está, generalmente, en:

Fedora
 /etc/php.ini
Mandriva
 /etc/php.ini
Ubuntu
 /etc/php5/apache2/php.ini
Debian
 /etc/php5/apache2/php.ini
Windows

En Windows; si instalaste XAMPP, con las configuraciones que te da por defecto; el directorio de instalación de XAMPP debería de estar en C:\xampp\php\php.ini. Si instalaste la version lite de XAMPP, con las configuraciones que te da por defecto; deberia de estar en C:\xampplite\php\php.ini

Mac

En Mac; si instalaste XAMPP, debería estar en /Applications/XAMPP/etc/php.ini

Cambios

Lo que tienes que cambiar es lo siguiente:

 error_reporting = E_ALL | E_STRICT
 display_errors = On
 display_startup_errors = On

Estas variables, en Fedora y en XAMPP para Windows, se encuentran de la línea 513 en adelante. Con ésto, ya podrás ver tus errores de inicio.

Configuración para desarrollo local (httpd ó apache)

Ahora configuraremos un ambiente de trabajo más práctico; pero más inseguro y no estandard. Ver la nota sobre ésto al final.

Ok, dicho esto, aquí va como configurar un directorio raiz o document root en nuestro directorio de usuario. Se presentan 2 maneras: Configurando VirtualHosts y Activando mod_user.

Fedora

Configurando VirtualHosts

Primero, hacerse root e ir a /etc/httpd/conf y editar el archivo httpd.conf

 su -
 cd /etc/httpd/conf
 gedit httpd.conf

Ir hasta el final e incluir el directorio de vhosts que vamos a crear

 Include vhosts.d/*.conf

Guardar los cambios y crear el directorio vhosts.d en /etc/httpd

 mkdir /etc/httpd/vhosts.d

Crear la configuración default (para respetar la configuración actual de Fedora)

 cd /etc/httpd/vhosts.d
 gedit 00-default.conf

Incluir la siguiente configuración:

  NameVirtualHost *:80

  <VirtualHost *:80>
      DocumentRoot /var/www/html
      ServerName localhost.localdomain
      ServerAlias localhost
  </VirtualHost>

  <Directory "/home/*/Public/html">
      AllowOverride FileInfo AuthConfig Limit
      Options MultiViews All
  </Directory>

Crear nuestra configuración inicial

 gedit 01-phpcabal.conf

Incluir la siguientes líneas de configuración. Por favor, substituye USUARIO por tu nombre de usuario:

  <VirtualHost *:80>
      DocumentRoot /home/USUARIO/Public/PHPCabal
      ServerName phpcabal.local
      ServerAlias phpcabal
  </VirtualHost>

Guardar los cambios y restaurar los contextos SELinux a todo el directorio

 restorecon -r /etc/httpd

Crear el directorio raíz en tu cuenta de usuario

 mkdir /home/USUARIO/Public/PHPCabal

Dar permisos de listado al directorio de usuario pertinente

 chmod 701 /home/USUARIO

Dar permisos a apache en SELinux

  setsebool httpd_enable_homedirs true

Cambiar el contexto de SELinux; de manera persistente; en el directorio raiz del usuario

 semanage fcontext -a -t httpd_user_content_t /home/USUARIO/Public/PHPCabal

Restaurar contextos SELinux

 restorecon -v /home/USUARIO/Public/PHPCabal
Activando mod_user

Esta opción es más sencilla y funcina para desarrollo simple. Es mejor recomendada la anterior pero, ésta, es más sencilla.

Primero, hacerse root e ir a /etc/httpd/conf y editar el archivo httpd.conf

 su -
 cd /etc/httpd/conf
 gedit httpd.conf

Ir a la sección de mod_user y activarlo para tu usuario (línea 346)

 <IfModule mod_userdir.c>
     #
     # UserDir is disabled by default since it can confirm the presence
     # of a username on the system (depending on home directory
     # permissions).
     #
     UserDir disabled
     UserDir enabled USUARIO # permitir solo a tu usuario en particular
 
     #
     # To enable requests to /~user/ to serve the user's public_html
     # directory, remove the "UserDir disabled" line above, and uncomment
     # the following line instead:
     # 
     UserDir Public/html

 </IfModule>

Crear el directorio raíz en tu cuenta de usuario

 mkdir /home/USUARIO/Public/html

Dar permisos de listado al directorio de usuario pertinente

 chmod 701 /home/USUARIO

Dar permisos a apache en SELinux

  setsebool httpd_enable_homedirs true

Cambiar el contexto de SELinux; de manera persistente; en el directorio raiz del usuario

 semanage fcontext -a -t httpd_user_content_t /home/USUARIO/Public/html

Restaurar contextos SELinux

 restorecon -v /home/USUARIO/Public/html
Ícono de nota
Nota: Es muy importante seguir los estandares. El directorio estandard para servir páginas web debe ser /srv/www. Por una razón u otra, las distribuciones favorecen /var/www y, en éste, poner los directorios raiz. En Fedora y mandriva, se utiliza /var/www/html como directorio raiz default. Estos datos son provistos por el Filesystem Hierarchy Standard (FHS).


Ícono de exclamación
¡Advertencia!: Es inseguro servir páginas web en los directorios de usuario (/home/*), ya que, para poder hacerlo, es necesario que apache pueda, por lo menos, listar los directorios de usuario (permiso o+x o 001 para el mundo). Esto es un potencial hoyo en seguridad y no debería hacerse así en ambientes de producción.


Recursos

Básicos de Programación

Básicos de PHP

OOP & Design Patterns

Cómo usar git y github