Apache 2.x en sistemas Unix
En esta página
Apache 2.x en sistemas Unix#
Esta sección contiene las notas y consejos de instalación de PHP con el servidor Apache 2.x en sistemas Unix.
[!WARNING] No se recomienda el uso de PHP en un entorno thread MPM, con Apache 2. Utilice el modo prefork MPM, que es el MPM predeterminado para Apache 2.0 y 2.2. Para saber por qué, lea la entrada de la FAQ correspondiente a la utilización de Apache 2 en un entorno thread MPM.
La Documentación Apache es la mejor fuente de información sobre el servidor Apache 2.x. La mayoría de la información sobre las opciones de instalación de Apache puede encontrarse allí.
La versión más reciente del servidor HTTP Apache puede obtenerse desde la página de descarga de Apache, y una versión adaptada de PHP desde los enlaces anteriores. Esta guía cubre únicamente las bases de funcionamiento de Apache 2.x con PHP. Para más información, leer la documentación Apache. Los números de versión se omiten aquí, para asegurarse de que las instrucciones no sean incorrectas. En los ejemplos a continuación, 'NN' deberá ser reemplazado por la versión específica de Apache a utilizar.
Actualmente hay 2 versiones de Apache 2.x - 2.4 y 2.2. Hay varias razones para elegir una sobre la otra; sin embargo, la versión 2.4 es actualmente la última versión disponible y también la que recomendamos. Sin embargo, las instrucciones contenidas en esta guía deberían funcionar para la versión 2.4 así como para la versión 2.2. Nota: Apache httpd 2.2 está oficialmente en Fin de Vida, no habrá más desarrollo ni parches para esta versión.
-
Descargue el servidor HTTP Apache desde el sitio anterior y descomprímalo :
tar -xzf httpd-2.x.NN.tar.gz -
De la misma manera, descargue y descomprima las fuentes de PHP :
tar -xzf php-NN.tar.gz -
Compile e instale Apache. Consulte la documentación sobre la instalación de Apache para más detalles sobre la compilación de este software.
cd httpd-2_x_NN ./configure --enable-so make make install -
Ahora que se tiene Apache 2.x.NN disponible bajo /usr/local/apache2, configúrelo con soporte para la carga de módulos, así como el MPM prefork estándar. Para probar la instalación, utilice el procedimiento normal para iniciar el servidor Apache, es decir:
/usr/local/apache2/bin/apachectl starty deténgalo para continuar con la configuración de PHP :
/usr/local/apache2/bin/apachectl stop -
Ahora, configure y compile PHP. Será en este momento cuando se podrá personalizar PHP con las diversas opciones disponibles, como la lista de extensiones a activar. Ejecute
./configure --helppara obtener la lista de opciones disponibles. En nuestro ejemplo, realizaremos una configuración simple, con Apache 2 y soporte MySQL.Si se ha construido Apache desde las fuentes, tal como se describe anteriormente, el siguiente ejemplo debería ser correcto en cuanto a las rutas hacia
apxs, pero si se ha instalado Apache de otra manera, se deberán tener en cuenta las especificidades y ajustar las rutasapxsen consecuencia. Tenga en cuenta que, según las distribuciones, podría ser necesario renombrarapxsaapxs2.cd ../php-NN ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-pdo-mysql make make installSi se decide modificar las opciones de configuración después de la instalación, se deberán ejecutar nuevamente las etapas
configure,makeymake install. Entonces solo se necesitará reiniciar Apache para que el nuevo módulo surta efecto. Una recompilación de Apache no es necesaria.Tenga en cuenta que, salvo indicaciones contrarias,
make installtambién instalará PEAR, así como diversas herramientas PHP como phpize, PHP CLI y mucho más. -
Configurar el archivo
php.inicp php.ini-development /usr/local/lib/php.iniSe debe editar el archivo
.inipara definir las opciones PHP. Si se prefiere colocarphp.inien otro directorio, utilice la opción--with-config-file-path=/some/pathen la etapa 5.Si se elige el archivo
php.ini-production, asegúrese de leer la lista de modificaciones correspondiente ya que puede afectar considerablemente la forma en que PHP funcionará. -
Edite el archivo
httpd.confpara cargar el módulo PHP. La ruta especificada a la derecha de la cadena LoadModule, debe corresponder a la ruta del sistema del módulo PHP.make installanterior debería haber realizado esta operación por usted, pero una simple verificación permitirá asegurarse.Para PHP 8:
```php LoadModule php_module modules/libphp.so
```
Para PHP 7:
```php LoadModule php7_module modules/libphp5.so
```
- Indique a Apache que analice ciertas extensiones como scripts PHP. Por ejemplo, deje que Apache pase a PHP los archivos cuya extensión es
.php. En lugar de utilizar solo la directivaAddTypede Apache, se desea evitar cualquier riesgo potencialmente peligroso, cuando se descarga y crea un archivo comoexploit.php.jpg, de ejecución PHP. Utilizando este ejemplo, se puede tener cualquier extensión analizada por PHP. Se ha añadido.phppara el ejemplo.
```php
```
O, si se desea permitir que los archivos `.php`, `.php2`, `.php3`, `.php4`, `.php5`, `.php6`, y `.phtml` sean analizados por PHP, pero nada más, se utilizará esto :
```php
```
Y para permitir que los archivos `.phps` sean manejados por el filtro del código fuente de PHP, y así, ser mostrados como código fuente con coloración sintáctica, utilice esto :
```php
```
Para permitir el uso de un archivo PHP como manejador por defecto cuando no se encuentra ningún otro manejador, por ejemplo al utilizar un motor de enrutamiento, se puede usar la directiva `FallbackResource`. Está disponible en Apache 2.4.4 y versiones posteriores.
Dado que la directiva `SetHandler` se aplica tanto si el archivo existe como si no, y `FallbackResource` solo se aplica si aún no se ha definido un manejador, puede ser necesario utilizar la directiva `If` para asegurarse de que el manejador solo se aplique si el archivo existe. Esto permite que `FallbackResource` gestione las rutas que terminan en `.php` pero que no existen, lo que puede resultar útil para el manejo de errores y el enrutamiento.
```php
```
`mod_rewrite` puede ser utilizado para permitir que cualquier archivo `.php` sea mostrado como código fuente con coloración sintáctica, sin necesidad de renombrarlo o copiarlo con una extensión `.phps`. :
```php RewriteEngine On RewriteRule (.*.php)s$ $1 [H=application/x-httpd-php-source]
```
El filtro de código fuente PHP no debería estar activo en sistemas de producción, ya que puede exponer código confidencial o información sensible contenida en el código fuente.
-
Utilice el procedimiento normal para iniciar el servidor Apache, es decir:
/usr/local/apache2/bin/apachectl startO
service httpd restart
Si se han seguido los pasos anteriores, ahora se tiene un servidor web Apache2 funcional con soporte PHP como módulo SAPI. Por supuesto, hay una multitud de otras opciones de configuración disponibles con Apache y PHP. Para más información, introduzca el comando ./configure --help en el árbol de fuentes correspondiente.
Apache puede ser compilado en modo multithread, seleccionando el MPM worker, en lugar del estándar MPM prefork. Esto se hace añadiendo la siguiente opción al argumento de ./configure, en la etapa 3 anterior:
--with-mpm=worker
Esto no debería emprenderse sin ser consciente de las consecuencias, y teniendo al menos una justa comprensión de lo que implica. La documentación de Apache sobre MPM-Modules proporcionará información importante que permitirá tomar la decisión.
[!NOTE] La FAQ Apache MultiViews trata sobre el uso de MultiViews con PHP.
[!NOTE] Para compilar una versión multithread de Apache, el sistema de destino debe soportar threads. En este caso, PHP también debe ser construido con Zend Thread Safety (ZTS). Bajo esta configuración, no todas las extensiones estarán disponibles. Recomendamos compilar Apache con el
preforkMPM-Module.