Cómo compilar PHP 7.2 en Ubuntu 18.04
|Este es la segunda parte del tutorial sobre montar un servidor Apache + PHP como módulo + PHP en modo FastCGI.
En esta ocasión vamos a instalar una versión de php como un módulo de Apache.
1. Descomprimir la versión de php 7, en este caso yo voy a usar la 7.2.18. Para descargarla lo podes hacer de aquí.
1 |
tar -xzvf php-7.2.18.tar.gz |
2. Instalar los siguientes requerimientos
1 |
sudo apt-get install libxml2-dev libcurl4-nss-dev libgdbm-dev libjpeg-turbo8-dev libpng-dev libfreetype6-dev libc-client2007e-dev libc-client2007e libicu-dev libmcrypt-dev freetds-dev libpqxx-dev libxslt1-dev libkrb5-dev libbz2-dev libzip-dev |
3. Crear los siguientes enlaces simbólicos:
1 2 3 |
sudo mkdir /usr/lib64 sudo ln -s /usr/lib/libc-client.a /usr/lib64/libc-client.a sudo ln -s /usr/lib/x86_64-linux-gnu/libsybdb.a /usr/lib64/libsybdb.a |
4. Ejecutar comando configure dentro de la carpeta de php-7.2.18:
1 |
./configure --prefix=/opt/www/php72 --with-apxs2=/opt/www/apache/bin/apxs --with-libdir=lib64 --enable-zip --with-zlib=yes --with-zlib-dir --with-libzip --with-mysqli --enable-inline-optimization --disable-debug --enable-bcmath --enable-calendar --enable-ctype --enable-ftp --enable-shmop --disable-sigchild --enable-sysvsem --enable-sysvshm --enable-wddx --with-gdbm --with-jpeg-dir --with-png-dir --with-freetype-dir --with-openssl --with-kerberos --with-xsl --with-gd --with-imap --with-imap-ssl --with-gettext --with-pdo-dblib --with-mhash --enable-sockets --enable-mbstring=all --with-curl --enable-mbregex --enable-exif --with-bz2 --with-sqlite3 --with-libxml-dir --enable-soap --with-xmlrpc --enable-pcntl --with-pgsql --with-pdo-mysql --with-pdo-pgsql --with-pdo-sqlite --enable-fileinfo --enable-phar --enable-intl --enable-maintainer-zts --enable-fpm --enable-opcache --enable-json --with-tsrm-pthreads --with-oci8=instantclient,/usr/lib/oracle/12.2/client64/lib |
NOTAS:
- --prefix: Es la ruta donde se hará la instalación de php.
- --with-apxs2: Es requerido solo si se quiere compilar php como módulo.
- --with-oci8: Parámetro opcional solo si querés trabajar con Oracle desde php. Para esto es necesario tener instalado anticipadamente el Instant Client de Oracle.
- Luego pongo de ejemplo la mayoría de parámetros para que funcione de manera general, es decir hemos habilitado opciones para MySQL, PostgreSQL, PDO, FTP, IMAP, Sqlite, JSON y otros.
[Adicional]
Estos son comandos para limpiar cache después de haber hecho configure para volver a ejecutarlo desde limpio:
1 2 |
rm -rf aclocal.m4 rm -rf autom4te.cache/ |
5. Hacer la instalación:
1 2 |
make sudo make install |
6. Editar el archivo de configuración de apache /opt/www/apache/conf/httpd.conf:
- Asegurarse que se ha incluido el modulo de php7, sino agregar esta linea manualmente:
LoadModule php7_module modules/libphp7.so - Agregar el siguiente contenido al final del archivo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
SetEnv TMP "/opt/www/tmp" SetEnv TEMP "/opt/www/tmp" SetEnv TMPDIR "/opt/www/tmp" <FilesMatch "\.php$"> SetHandler application/x-httpd-php </FilesMatch> <FilesMatch "\.phps$"> SetHandler application/x-httpd-php-source </FilesMatch> <IfModule php7_module> PHPIniDir "/opt/www/php72" </IfModule> <IfModule mime_module> AddType text/html .php .phps </IfModule> |
- Guardar y cerrar.
7. Copiar el archivo php.ini de la carpeta fuente de php hacia la carpeta destino en el servidor:
1 |
sudo cp /home/hugo/comp/php/php-7.2.18/php.ini-production /opt/www/php72/php.ini |
8. Editar el archivo /opt/www/php72/php.ini y modificar las siguientes configuraciones:
1 2 |
upload_tmp_dir = /opt/www/tmp date.timezone = America/El_Salvador |
9. Guardar el archivo y reiniciar el servidor apache:
1 |
sudo systemctl restart httpd |
10. Por último podemos crear un archivo info para ver el resultado de todo este trabajo:
1 2 3 |
sudo su echo '<?php phpinfo();' > /opt/www/apache/htdocs/index.php exit |
Digitamos la url: http://localhost/index.php y podremos ver los detalles de la instalación.
En el siguiente tutorial instalaremos una segunda versión de php en modo FastCGI.