
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 mbstring
Problem 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.conf
aber php5.load
doch, 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.load
hinzu:
# 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-enabled
Verzeichnis. 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.log
und starten Sie dann neu:
sudo su
> /var/log/apache2/error.log
exit
sudo service apache2 restart
Überprüfen Sie dies nun error.log
durch Ausgabe cat /var/log/apache2/error.log | less
(die Weiterleitung über „less“ ermöglicht Ihnen ein einfaches Hoch- und Runterscrollen und q
beendet die Ausgabe).
Wenn Ihr error.log
viele enthält (und ich meine wörtlich eineHaufenvon) einige MIBS not found
tun 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.log
es 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.