Cómo instalar PHP en FreeBSD 12

En esta entrada vamos a ver cómo instalar PHP en FreeBSD 12 paso a paso, un complemento perfecto para integrar en el servicio web de nuestro servidor o VPS FreeBSD, dotándolo de potentes capacidades de desarrollo y despliegue de aplicaciones web.

Cómo instalar PHP en FreeBSD 12

Para instalar PHP en FreeBSD 12 utilizaremos los repositorios oficiales del sistema, así que empezaremos actualizando las listas de paquetes:

~$ sudo pkg update

Una búsqueda entre los paquetes de PHP de que disponemos nos revelará que la última versión disponible es PHP 8.0. Si estás interesado en versiones anteriores, como PHP 7.3 ó PHP 7.4, sólo tienes que renombrar los paquetes adecuadamente.

Los paquetes que instalaremos con pkg son php80, al que añadiremos mod_php80, el módulo para el servidor web Apache:

~$ sudo pkg install -y php80 mod_php80

Para la versión 7.4 los paquetes que necesitarías serían php74 y mod_php74.

En cualquier caso, se descarga PHP junto a las dependencias que necesite.

Cómo probar PHP en FreeBSD 12

Si quisiéramos probar PHP podemos hacerlo directamente en consola. Creamos un pequeño script guardado en un archivo, por ejemplo, test.php, con el siguiente contenido:

<?php echo "hola, mundo\n\n"; ?>

Una vez guardado y de vuelta en consola invocamos PHP para que procese nuestro pequeño script de prueba:

~$ php test.php
hola, mundo

$

Y vemos que hace lo que se espera, imprimir un mensaje en la consola. PHP está funcionando en nuestro sistema FreeBSD 12.

Cómo configurar Apache para PHP en FreeBSD 12

Durante la instalación del módulo de PHP, mod_php80, se activa en la configuración de Apache. Podemos comprobarlo buscándolo en httpd.conf:

$ grep -i php /usr/local/etc/apache24/httpd.conf
LoadModule php_module        libexec/apache24/libphp.so

Pero es lo único que ha incluido el instalador en la configuración del servidor web. Hay que terminar la configuración manualmente.

El servidor web Apache por defecto lee todas las configuraciones almacenadas en /usr/local/etc/apache24/Includes/. Así que vamos a crear el archivo php.conf:

~$ sudo nano /usr/local/etc/apache24/Includes/php.conf

En este archivo guardaremos la configuración para el módulo de PHP en el que incluiremos lo siguiente:

  • Que se tengan en cuenta como archivos índice los archivos index.php.
  • Que las extensiones .php y .phps sean tratadas como aplicaciones PHP.

Para ello necesitamos un bloque <IfModule dir_module> y un par de bloques <FilesMatch>.

Así quedaría este nuevo archivo php.conf:

<IfModule dir_module>
    DirectoryIndex index.php
</IfModule>

<FilesMatch "\.php$">
        SetHandler application/x-httpd-php
</FilesMatch>

<FilesMatch "\.phps$">
        SetHandler application/x-httpd-php-source
</FilesMatch>

Ahora recargamos la configuración del servidor web para que los cambios tomen efecto:

$ sudo service apache24 restart

En este momento Apache integra PHP y es capaz de interpretar los archivos .php.

Comprobar el funcionamiento de PHP

Vamos a crear un pequeño script PHP llamado, por ejemplo, info.php en alguna ubicación fácilmente accesible vía web para probarlo a través del navegador. Si no has modificado la configuración del servidor web, puedes crearlo como /usr/local/www/apache24/data/info.php:

~$ sudo nano /usr/local/www/apache24/data/info.php

El contenido será el siguiente:

<?php phpinfo(); ?>

Ahora accedemos a través del navegador añadiendo la ruta /info.php a http://localhost, al dominio o a la dirección IP del servidor (o como corresponda si lo has ubicado y llamado de forma diferente).

Por ejemplo, la máquina FreeBSD 12 con la que hemos preparado este tutorial es accesible en el subdominio freebsd12.local.lan, por lo que para hacer la prueba usaríamos http://freebsd12.local.lan/info.php como URL:

como instalar PHP 8 en FreeBSD 12

Si optaste por una versión anterior, como PHP 7.4, la página de información lo reflejará:

como instalar php 7.4 en freebsd 12

Cómo configurar PHP para Apache en FreeBSD

El módulo de PHP del servidor web lee su configuración específica de un archivo que por defecto NO existe. En /usr/local/etc/ tenemos php.ini-development y php.ini-production, versiones de configuración para entornos de desarrollo y de producción respectivamente.

Tenemos que crear un enlace simbólico llamado php.ini a uno de los dos archivos anteriores, concretamente al que represente el entorno en que está funcionando nuestro servidor. Si es un VPS FreeBSD ofreciendo servicios en Internet, el enlace debería ser a php.ini-production. En caso de que se trate de un servidor de desarrollo o pruebas, sería a php.ini-development.

La decisión que tomemos afecta al rendimiento, comportamiento ante errores, etc. Suponiendo que fuera un entorno de desarrollo enlazaríamos así:

$ sudo ln -s /usr/local/etc/php.ini-development /usr/local/etc/php.ini

Hecho este cambio, editamos php.ini para establecer la zona horaria del servidor, que no viene configurada por defecto.

~$ sudo nano /usr/local/etc/php.ini

Buscaremos la cláusula date.timezone:

...
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
;date.timezone =
...

Y cambiamos el valor de nuestra zona horaria. Tal y como informan los comentarios, en http://php.net/date.timezone encontraremos los valores para todas las zonas horarias mundiales. En este ejemplo, el servidor está en España, por lo que el valor será Europe/Madrid:

...
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Europe/Madrid
...

Guardamos los cambios y, como cada vez que realicemos ajustes en php.ini, necesitaremos recargar la configuración del servidor web:

~$ sudo service apache24 reload

Seguridad

Por defecto PHP para FreeBSD 12 está configurado para poder informar sobre su número de versión en las cabeceras HTTP que envía el servidor web. Esto podría suponer un problema de seguridad si la versión instalada de PHP tiene problemas de seguridad conocidos y un usuario malicioso obtiene tales cabeceras.

Para evitar esto editaremos php.ini y localizaremos la directiva expose_php:

...
expose_php = On
...

Cambiaremos el valor On por Off:

...
expose_php = Off
...

Guardaremos los cambios y recargaremos la configuración del servidor web, con lo que las cabeceras que ofrecen el número de versión de PHP ya no estarán disponibles.

Cómo instalar módulos PHP en FreeBSD

Tarde o temprano necesitarás instalar módulos o extensiones de PHP en FreeBSD 12. Puedes buscar en los repositorios buscando según la versión de PHP que tengas instalada. En este ejemplo el sistema tiene instalado PHP 8.0, así que podríamos buscar entre los módulos disponibles.

Por ejemplo, para buscar el módulo de MySQL para PHP 8.0 puedes buscarlo con pkg de la siguiente forma:

~$ pkg search ^php80 |grep -i mysql
php80-mysqli-8.0.8             The mysqli shared extension for php
php80-pdo_mysql-8.0.8          The pdo_mysql shared extension for php
php80-pear-MDB2_Driver_mysqli-1.5.0.b4 PEAR MySQL MDB2 driver

Cuando sepas qué módulo necesitas, se instala como cualquier otro paquete:

$ sudo pkg install -y php80-mysqli

Después de instalar cualquier módulo de PHP hay que recargar la configuración o reiniciar el servidor web.

Te recomiendo algunos módulos PHP cuya instalación es muy recomendable ya que, por ejemplo, son requeridos por muchos CMS ampliamente usados:

  • php80-curl
  • php80-gd
  • php80-mbstring
  • php80-zlib

Conclusión

Ahora que ya sabes cómo instalar PHP en FreeBSD 12 integrado con tu servidor web estás listo para desarrollar potentes aplicaciones web interactivas.

Si tienes cualquier duda o pregunta, quieres informar de algún error o tienes alguna sugerencia para nuevos artículos, déjame un comentario.

¡Apoya comoinstalar.me!

Si esta guía de instalación y configuración de PHP en FreeBSD 12 te ha resuelto algún problemón o te ha ahorrado tiempo, quizás quieras echarnos una mano con una mínima aportación para el mantenimiento de este sitio y la redacción de más y mejores artículos, lo que puedes hacer dejando desde 1 $ de propina con PayPal:

O, si te sientes especialmente agradecido, invitándonos a un café:

¡Gracias!

Valora esta entrada

5/5 - (1 voto)

Deja un comentario