Ich habe gerade ein Upgrade von 14.10 auf 16.04 durchgeführt und bin mir nicht sicher, wie ich PHP 7 in Apache konfigurieren soll. Ich habe die php7.0.conf-Datei geändert, um die letzten Zeilen zu entfernen, Apache2 neu gestartet und keine Änderung vorgenommen.
Muss ich das Apache2-Setup ändern, um PHP zuzulassen?
PHP funktioniert von der Kommandozeile aus, daher bin ich sicher, dass das PHP richtig installiert ist.
Außerdem erhalte ich auf phpadmin eine Fehlermeldung, dass der mbstring fehlt.
php
Befehl) ist orthogonal zu den anderen PHP-SAPIs (apache2, FPM, CGI, ...), sodass Working Command Line PHP nichts über das Arbeiten mit PHP auf dem HTTP-Server aussagt.sudo apt-get install php-mbstring
(Wer hätte das gedacht, oder?)Antworten:
Nach wie vor müssen Sie PHP für Apache installieren.
Aus dem Serverhandbuch :
Dieser Befehl installiert PHP und das Apache 2 PHP-Modul. Konfigurieren Sie einfach Apache wie zuvor (
sudo a2enmod php7.0
ich denke, wird das Modul einschalten).Ihr
mbstring
Problem ist ähnlich - Sie müssen diese Erweiterung installieren:Für andere fehlende Module müssen ähnliche Dinge ebenfalls installiert werden.
quelle
sudo a2enmod php7.0
interessant sein (oder so habe ich durch Deaktivieren und erneutes Aktivieren auf meinem Computer festgestellt.),Considering conflict php5 for php7.0: Enabling module php7.0.
sudo a2enmod php
wird nicht funktionieren, ich habe es versucht. Allerdingssudo a2enmod php7.0
funktioniert.Um php7 für den Betrieb mit Ihrem Server zu konfigurieren, müssen Sie einige Einstellungen vornehmen:
1. Stellen Sie sicher, dass Sie alle Spuren von entfernen
php/php5
Öffnen Sie ein Terminal Ctrl+ Alt+ Tund:
Die Ausgabe sollte kein
php5.conf
oder enthalten.php5.load
Wenn dies der Fall ist, gehen Sie folgendermaßen vor:Fügen Sie nun das
php7.0.conf
und hinzuphp7.0.load
:Die Ausgabe von
ls -la php*
sollte folgendermaßen aussehen:Nach der Bearbeitung der Module kommen wir nun zum
/etc/apache2/conf-enabled
Verzeichnis. Entfernen Sie hier auch alle Spuren von PHP / PHP5sudo rm <name>
Dann, wenn nötig, machen Sie:
Die Ausgabe von
ls -la php*
sollte folgendermaßen aussehen:2. Starten Sie Apache2 neu
Stellen Sie vor dem Neustart von Apache sicher, dass Sie den Apache bereinigen und
error.log
anschließend neu starten:Überprüfen Sie nun die
error.log
Ausgabe durchcat /var/log/apache2/error.log | less
(Durch Weiterleiten durch weniger können Sie einfach nach oben und unten scrollen, umq
die Ausgabe zu beenden).Wenn Ihr
error.log
viele enthält (und ich meine wörtlich einen Haufen davon),MIBS not found
tun einige Folgendes:Das Häkchen nochmal das
error.log
es jetzt nur noch 3 Zeilen enthalten soll:Ihr Apache mit php7.0 sollte jetzt richtig konfiguriert sein.
quelle
a2enmod
unda2dismod
, anstatt manuell an Links inmods-available
/ zu bastelnmods-enabled
(ähnlicha2enconf
unda2disconf
fürconf-{available,enabled}
).a2enmod
unda2dismod
den Zustand der Module im internen apache2 Paket Registrierung erinnern, so machen / Entfernen der Links manuell können Ihr System für zukünftigen Upgrades gebrochen machen als der Upgrade - Skripte auf dem Zustand dieser internen Datenbank aussieht.Ich habe auch dieses Problem.
Es hat mir geholfen, alle PHP zu löschen und PHP7 neu zu installieren.
Alles was benötigt wurde war:
php7 wird gelöscht, danach nur noch um es neu zu installieren:
quelle
sudo apt-get purge php*
auch Ihr phpMyAdmin entfernt wird, falls Sie eines haben.In meinem Fall funktionierte nicht nur PHP, sondern auch PHPYAdmin. Ich habe das Schritt für Schritt gemacht
Und dann zu:
In der letzten Zeile füge ich hinzu
Include /etc/phpmyadmin/apache.conf
Das macht einen Deal mit allen Problemen
quelle
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 Option auf "Aus" eingestellt. Mein PHP-Code begann mit
Anstatt von
Wenn aktiviert, wird der short_open_tag (durch Ändern von 'Off' in 'On' in meiner php.ini) und das Zurücksetzen des Apache-Servers (
sudo service apache2 restart
) und PHP lebend zurückgesetzt.quelle
https://wiki.archlinux.org/index.php/Apache_HTTP_Server
quelle
Ich konnte auch PHP-Skripte erfolgreich von der Kommandozeile unter Ubuntu 16.04 ausführen, aber nicht in jedem Browser. Um das Problem zu lösen, habe ich meine vorhandenen Kopien von php7.0 und apache2 gelöscht. Danach habe ich sowohl von der Kommandozeile als auch von der PHP-Bibliothek von Apache2 aus neu installiert. Frustration folgte, als ich versuchte, "a2enmod php7.0" auszuführen, was mir mitteilte, dass das php7.0-Modul nicht existierte, obwohl ich wieder PHP-Skripte von der Kommandozeile ausführen konnte. Der Instinkt setzte ein. Als ich Synaptic öffnete, stellte ich fest, dass ich bei der Installation der Apache2-PHP-Bibliothek über die Befehlszeile nur libapache2-mod-php7.0 installiert und vergessen hatte, auch den "Wrapper" libapache2-mod-php7.0 zu installieren. php, ohne das erstere nicht funktionieren wird.
quelle