
Acabo de actualizar de 14.10 a 16.04 y no estoy seguro de cómo configurar PHP 7 en Apache. Modifiqué el archivo php7.0.conf para descomentar las últimas líneas, reinicié Apache2 y no hubo cambios.
¿Necesito cambiar la configuración de Apache2 para permitir php?
PHP funciona desde la línea de comando, por lo que estoy seguro de que PHP está instalado correctamente.
Además, aparece un error en phpadmin que dice que falta el mbstring.
Respuesta1
Al igual que antes, debes instalar PHP para Apache.
Desde elGuía del servidor:
sudo apt install php libapache2-mod-php
Ese comando instalará PHP y el módulo PHP de Apache 2. Simplemente configure Apache como antes ( sudo a2enmod php7.0
creo que activará el módulo).
Tu mbstring
problema es similar: necesitas instalar esa extensión:
sudo apt install php7.0-mbstring
Para otros módulos faltantes, también habrá que instalar cosas similares.
Respuesta2
Para configurar php7 para que se ejecute con su servidor, necesita realizar alguna configuración:
1. Asegúrese de eliminar cualquier rastro dephp/php5
Abra una terminal Ctrl+ Alt+ Ty:
cd /etc/apache2/mods-enabled
ls -la
La salida debenocontiene cualquiera php5.conf
o php5.load
, pero si es así, haga lo siguiente:
# this is the proper way of disabling modules
sudo a2dismod php5
# run this only if the above command didn't remove the php5 sym-links
sudo rm php5.load
sudo rm php5.conf
Ahora agregue php7.0.conf
y php7.0.load
en su lugar:
# this is the proper way of enabling modules
sudo a2enmod php7.0
# run this only if the above command didn't create the php7.0 sym-links
sudo ln -s php7.0.conf ../mods-available/php7.0.conf
sudo ln -s php7.0.load ../mods-available/php7.0.load
La salida de ls -la php*
debería verse así:
lrwxrwxrwx 1 root root 29 Apr 15 03:55 php7.0.conf -> ../mods-available/php7.0.conf
lrwxrwxrwx 1 root root 29 Apr 15 03:55 php7.0.load -> ../mods-available/php7.0.load
Después de tratar con los módulos llegamos al /etc/apache2/conf-enabled
directorio. Elimine cualquier rastro de php/php5 aquí tambiénsudo rm <name>
Luego, si es necesario, haga:
# the proper way of enabling configs
sudo a2enconf php7.0-cgi
sudo a2enconf php7.0-fpm
# do those commands only if the above didn't work out
sudo ln -s php7.0-cgi.conf ../conf-available/php7.0-cgi.conf
sudo ln -s php7.0-fpm.conf ../conf-available/php7.0-fpm.conf
La salida de ls -la php*
debería verse así:
lrwxrwxrwx 1 root root 33 Apr 21 17:00 php7.0-cgi.conf -> ../conf-available/php7.0-cgi.conf
lrwxrwxrwx 1 root root 33 Apr 21 17:01 php7.0-fpm.conf -> ../conf-available/php7.0-fpm.conf
2. Reiniciar Apache2
Antes de reiniciar Apache, asegúrese de limpiar Apache error.log
y luego reinicie:
sudo su
> /var/log/apache2/error.log
exit
sudo service apache2 restart
Ahora verifique error.log
mediante emisión cat /var/log/apache2/error.log | less
(la tubería a través de menos le permite desplazarse fácilmente hacia arriba y hacia abajo, q
sale de la salida).
Si error.log
contiene muchos (y literalmente me refiero a unmontónde) algunos MIBS not found
hacen lo siguiente:
sudo apt install libsnmp-dev
sudo net-snmp-config --snmpconfpath
sudo apt-get install snmp snmp-mibs-downloader
sudo su
> /var/log/apache2/error.log
exit
sudo service apache2 restart
La verificación nuevamente error.log
ahora solo debería contener 3 líneas:
[Sat Apr 23 01:39:07.504005 2016] [mpm_prefork:notice] [pid 1647] AH00169: caught SIGTERM, shutting down
[Sat Apr 23 01:39:08.685774 2016] [mpm_prefork:notice] [pid 9590] AH00163: Apache/2.4.18 (Ubuntu) mod_perl/2.0.9 Perl/v5.22.1 configured -- resuming normal operations
[Sat Apr 23 01:39:08.685938 2016] [core:notice] [pid 9590] AH00094: Command line: '/usr/sbin/apache2'
Su Apache con php7.0 ahora debería estar configurado correctamente.
Respuesta3
Yo también tengo este problema.
Me ayudó a eliminar todo PHP y reinstalar php7.
Todo lo que se necesitaba era:
sudo apt-get purge php*
Se eliminará php7, luego solo hay que reinstalarlo:
sudo apt-get install php7.0-mysql php7.0-curl php7.0-json php7.0-cgi php7.0 libapache2-mod-php7.0
Respuesta4
La solución que encontré para este problema fue la configuración predeterminada de PHP.INI para short_open_tag. De forma predeterminada, esto está configurado en "Desactivado". Mi código PHP comenzó con
<?
en lugar de
<?php
Si habilitó short_open_tag (cambiando 'Desactivado' a 'Activado' en mi php.ini) y restableció el servidor Apache ( sudo service apache2 restart
) y PHP volvió a funcionar.