Upgrade auf 16.04. php7 funktioniert nicht im Browser

Upgrade auf 16.04. php7 funktioniert nicht im Browser

Ich habe gerade ein Upgrade von 14.10 auf 16.04 durchgeführt und bin nicht sicher, wie ich PHP 7 in Apache konfiguriere. Ich habe die Datei php7.0.conf geändert, um die letzten Zeilen zu entfernen, Apache2 neu gestartet und keine Änderung.

Muss ich das Apache2-Setup ändern, um PHP zuzulassen?

PHP funktioniert über die Befehlszeile, daher bin ich sicher, dass PHP ordnungsgemäß installiert ist.

Darüber hinaus erhalte ich von phpadmin die Fehlermeldung, dass der MBstring fehlt.

Antwort1

Wie zuvor müssen Sie PHP für Apache installieren.

Von demServerhandbuch:

sudo apt install php libapache2-mod-php

Dieser Befehl installiert PHP und das Apache 2 PHP-Modul. Konfigurieren Sie Apache einfach wie zuvor ( sudo a2enmod php7.0, glaube ich, wird das Modul aktivieren).


Ihr mbstringProblem ist ähnlich – Sie müssen diese Erweiterung installieren:

sudo apt install php7.0-mbstring

Für andere fehlende Module müssen ähnliche Dinge ebenfalls installiert werden.

Antwort2

Um php7 für die Ausführung mit Ihrem Server zu konfigurieren, müssen Sie einige Konfigurationen vornehmen:

1. Achten Sie darauf, alle Spuren vonphp/php5

Öffnen Sie ein Terminal Ctrl+ Alt+ Tund:

cd /etc/apache2/mods-enabled
ls -la

Die Ausgabe solltenichtenthalten , wenn php5.confaber php5.loaddoch, gehen Sie wie folgt vor:

# 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

Fügen Sie nun stattdessen das php7.0.conf„und“ php7.0.loadhinzu:

# 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

Die Ausgabe ls -la php*sollte folgendermaßen aussehen:

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

Nachdem wir uns mit den Modulen beschäftigt haben, kommen wir nun zum /etc/apache2/conf-enabledVerzeichnis. Entfernen Sie auch hier alle Spuren von php/php5, indem Siesudo rm <name>

Führen Sie dann bei Bedarf Folgendes aus:

# 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

Die Ausgabe ls -la php*sollte folgendermaßen aussehen:

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. Apache2 neu starten

Bevor Sie Apache neu starten, achten Sie darauf, Apache zu bereinigen error.logund starten Sie dann neu:

sudo su
> /var/log/apache2/error.log
exit
sudo service apache2 restart

Überprüfen Sie dies nun error.logdurch Ausgabe cat /var/log/apache2/error.log | less(die Weiterleitung über „less“ ermöglicht Ihnen ein einfaches Hoch- und Runterscrollen und qbeendet die Ausgabe).

Wenn Ihr error.logviele enthält (und ich meine wörtlich eineHaufenvon) einige MIBS not foundtun Folgendes:

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

Überprüfen Sie es noch einmal, error.loges sollte jetzt nur noch 3 Zeilen enthalten:

[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'

Ihr Apache mit php7.0 sollte jetzt richtig konfiguriert sein.

Antwort3

Ich habe dieses Problem auch.

Es hat mir geholfen, alles PHP zu löschen und php7 neu zu installieren.

Alles was benötigt wurde war:

sudo apt-get purge php*

php7 wird gelöscht, anschließend einfach neu installieren:

sudo apt-get install php7.0-mysql php7.0-curl php7.0-json php7.0-cgi  php7.0 libapache2-mod-php7.0

Antwort4

Die Lösung, die ich für dieses Problem gefunden habe, war die Standardeinstellung von PHP.INI für short_open_tag. Standardmäßig ist diese auf „Aus“ eingestellt. Mein PHP-Code begann mit

   <?

anstatt

   <?php

Wenn ich den short_open_tag aktiviere (indem ich in meiner php.ini „Off“ in „On“ ändere) und den Apache-Server zurücksetze ( sudo service apache2 restart), ist PHP wieder aktiv.

verwandte Informationen