En este tutorial aprenderás a instalar PHP en Ubuntu. Seguidamente veremos también cómo integrar PHP con Apache y Nginx, que son los servidores web más utilizados en la actualidad. Los pasos que verás servirán para cualquier versión de PHP.
Para seguir este tutorial no necesitarás ningún conocimiento previo salvo ciertos conocimientos básicos acerca de la línea de comandos de Linux. También necesitarás tener privilegios de administrador en el sistema.
Contenidos
Paquetes que Incluyen PHP
Existen ciertos paquete para Ubuntu que ya incluyen PHP como parte de un conjunto de aplicaciones. Estos paquetes suelen usarse cuando quieres crear un entorno de desarrollo local LAMP de PHP, incluyendo también Apache y MySQL. Estos paquetes funcionan bien y no requieren ningún tipo de configuración.
En este tutorial veremos cómo instalar PHP individualmente. Sin embargo, si prefieres usar algún paquete todo en uno, tienes XAMPP a tu disposición:
- Instalación de PHP con XAMPP: Cómo instalar XAMPP en Ubuntu
Si por el contrario prefieres instalar PHP individualmente, que es lo recomendado cuando quieres poner código en producción, sigue leyendo.
Instalación de PHP en Ubuntu
Vamos a ver cómo se instala PHP individualmente y seguidamente también veremos cómo instalar algunas opciones. Para instalar PHP en cualquier versión de Ubuntu sigue estos pasos:
- Lo primero que debes hacer es abrir la terminal de comandos, ya sea pulsando Ctrl+Alt+T o buscando «terminal» en el lanzador de aplicaciones.
- Ahora actualiza la lista de paquetes del repositorio de Ubuntu mediante este comando:
sudo apt-get update
- Seguidamente, ejecuta este comando para instalar PHP:
sudo apt install php
- También es recomendable que instales las extensiones más utilizadas de PHP. Mediente el siguiente comando podrás instalar todas las necesarias:
sudo apt install php-{bcmath,bz2,intl,gd,mbstring,mcrypt,mysql,zip}
- Y con esto ya estará PHP instalado en Ubuntu.
Ya hemos instalado PHP, pero todavía tenemos que hacer que funcione con Apache o con Nginx, que son los dos servidores más utilizados.
Configuración de PHP para Apache
A continuación vamos explicar cómo configurar PHP de modo que Apache sea capaz de procesar los scripts de PHP. Se da por hecho que ya tienes Apache instalado en tu sistema. Si todavía no has instalado Apache, consulta el tutorial de instalación de Apache en Ubuntu. Para activar el módulo de PHP para Apache bastará con que sigas estos pasos:
- Lo primero que debes hacer es parar Apache, en caso de que se esté ejecutando, mediante el siguiente comando:
sudo systemctl stop apache2
Tras actualizar de nuevo la lista de paquetes disponibles, ejecuta este comando:
sudo apt install libapache2-mod-php
- Seguidamente debes editar el archivo de configuración de Apache localizado en la ruta
/etc/apache2/httpd.conf
con cualquier editor de texto. Por ejemplo, con gedit:gedit /etc/apache2/httpd.conf
- Debes establecer el siguiente valor para la opción
DirectoryIndex
:DirectoryIndex index.php index.php3 index.html index.htm
- A continuación reinicia Apache mediante el siguiente comando:
sudo systemctl restart apache2
- Y con esto, ya debería estar funcionando.
Ahora vamos a verificar si PHP funciona con Apache. Para ello crea un archivo llamado index.php
y colócalo en el directorio de archivos de Apache, que por defecto es el directorio /var/www/html
. Edita el archivo que acabas de crear y agrega el siguiente script, que debería mostrar la versión actual de PHP:
<?php phpinfo(); ?>
Guarda el archivo y accede a la URL http://localhost/
desde tu navegador, en donde deberías ver la versión de PHP que tienes instalada.
Configuración de PHP para Nginx
En caso de que utilices el servidor Nginx, has de saber que no existe ningún módulo que puedas utilizar, por lo que tendrás que utilizar PHP FPM, que significa fastCGI Process Manager. Nginx será capaz de procesar scripts de PHP mediante esta aplicación. Para instalar PHP FPM y configurarlo con Nginx sigue estos pasos:
- Lo primero que debes hacer es instalar PHP FPM mediante este comando:
sudo apt install php-fpm
- Seguidamente comprueba si PHP FPM está correctamente instalado mediante el siguiente comando, reemplazado la versión
7.4
de PHP usada en el comando por tu versión de PHP:systemctl status php7.4-fpm
Deberías obtener una salida similar a esta:
* php7.4-fpm.service - The PHP 7.4 FastCGI Process Manager
- Luego edita el archivo de configuración de php-fpm, reemplazando
7.4
por tu verisón de PHP:sudo nano /etc/php/7.4/fpm/php.ini
- En el archivo, busca la opción
cgi.fix_pathinfo
, elimina el comentario de la línea borrando el punto y coma;
que la precede y establece el valor de la opción a cero:cgi.fix_pathinfo=0
De este modo, los usuarios ya no podrán ejecutar scripts para los cuales no tienen permiso de ejecución.
- Seguidamente, guarda el archivo y reinicia PHP, reemplazando
7.4
por tu versión de PHP:sudo systemctl restart php7.4-fpm
- Ahora todavía necesitamos decirle a Nginx que use PHP para procesar contenido dinámico. Para ello debemos configurar configurar los bloques de servidor, que son el equivalente a los hosts virtuales de Apache. Vamos a editar el archivo de configuración del bloque principal de Nginx mediante este comando:
sudo nano /etc/nginx/sites-available/default
- En el archivo, busca la opción
index
y agrega el valorindex.php
al inicio de la lista, tal que así:index index.php index.html index.htm index.nginx-debian.html;
- Luego, busca la opción
server_name
, que podrás establecer que al dominio de tu servidor o a la IP pública del mismo:server_name server_domain_or_IP;
- Seguidamente, elimina el comentario del siguiente bloque, o en caso de que la opción
location ~ \.php$
no esté presente, agrégala. De nuevo, reemplaza7.4
por tu versión de PHP:location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.4-fpm.sock; }
- Del mismo modo, elimina el comentario del siguiente bloque, o en caso de que la opción
location ~ /\.ht
no esté presente, agrégala:location ~ /\.ht { deny all; }
- Luego, guarda el archivo, cierra el editor y ejecuta el siguiente comando para probar la configuración:
sudo nginx -t
- En caso de que se produzca algún error, revisa de nuevo la configuración. De lo contrario, reinicia Nginx mediante el siguiente comando:
sudo systemctl reload nginx
Tras reiniciar Nginx ya debería ser capaz de procesar scripts PHP.
Cómo instalar extensiones de PHP
Puedes instalar todas las extensiones de PHP que quieras. Las extensiones están disponibles como paquetes independientes. Para instalar una extensión usa el siguiente comando, reemplazando [extension]
por el nombre de la extensión que quieres instalar:
sudo apt install php-[extension]
Por ejemplo, vamos a instalar la extensión de MySQL para PHP, de modo que puedas conectarte a MySQL desde PHP. Para ello usa este comando:
sudo apt install php-mysql
Tal y como hemos instalado esta extensión podrás instalar cualquier otra.
Y esto ha sido todo.
Hola. He instalado Apache, PHP y Mysql en una instancia de AWS Ubuntu server 20.04. He modificado el archivo php.ini para poder subir archivos más grandes. Después de guardar los cambios y reiniciar Apache muestro la información de PHP y los cambios no aparecen. Es como si hubiera otro php.ini más importante. Te agradecería que me orientaras en la solución.
Gracias