it-swarm.com.de

Upgrade auf den 16.04. PHP7 funktioniert nicht im Browser

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.

69
David Wright

Nach wie vor müssen Sie PHP für Apache installieren.

Aus dem Server Guide :

Sudo apt install php libapache2-mod-php

Dieser Befehl installiert PHP und das Apache 2 PHP Modul. Konfigurieren Sie einfach Apache wie zuvor (Sudo a2enmod php7.0, ich denke, schaltet das Modul ein).


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.

81
Thomas Ward

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 php/php5 entfernen.

Öffnen Sie ein Terminal Ctrl+Alt+T und:

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

Die Ausgabe sollte nichtphp5.conf oder php5.load enthalten. Wenn dies der Fall ist, gehen Sie folgendermaßen 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 den php7.0.conf und den 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 von 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 in das Verzeichnis /etc/Apache2/conf-enabled. Entfernen Sie auch hier alle Spuren von PHP/PHP5 mit Sudo 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 von 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. Neustart von Apache2

Stellen Sie vor dem Neustart von Apache sicher, dass Sie den Apache error.log bereinigen und starten Sie ihn anschließend neu:

Sudo su
> /var/log/Apache2/error.log
exit
Sudo service Apache2 restart

Überprüfen Sie nun den error.log, indem Sie cat /var/log/Apache2/error.log | less eingeben (durch weniger blättern können Sie einfach nach oben und unten scrollen, q verlässt die Ausgabe).

Wenn Ihr error.log viele (und ich meine wörtlich Haufen von) einige MIBS not found enthält, gehen Sie wie folgt vor:

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

Den error.log nochmal überprüfen, er 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.

40
Videonauth

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:

Sudo apt-get purge php*

php7 wird gelöscht, danach nur noch um es neu zu installieren:

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

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

   <?php

Wenn aktiviert, ist der short_open_tag (durch Ändern von 'Off' in 'On' in meiner php.ini) und Zurücksetzen des Apache-Servers (Sudo service Apache2 restart) und PHP wieder aktiv.

7
patrick

In meinem Fall funktionierte nicht nur PHP, sondern auch PHPYAdMIN. Ich habe das Schritt für Schritt gemacht

Sudo apt install php libapache2-mod-php
Sudo apt install php7.0-mbstring
Sudo a2dismod mpm_event
Sudo a2enmod mpm_prefork
service Apache2 restart

Und dann zu:

gksu gedit /etc/Apache2/Apache2.conf

In der letzten Zeile füge ich Include /etc/phpmyadmin/Apache.conf hinzu

Das macht einen Deal mit allen Problemen

7
Maciej

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 einschließlich als auch von Apache2s PHP-Bibliothek 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 installierte und vergessen hatte, auch den "Wrapper" libapache2-mod-php7.0 zu installieren. php, ohne das erstere nicht funktionieren wird.

0
Bill Wilken

https://wiki.archlinux.org/index.php/Apache_HTTP_Server

Sudo a2dismod mpm_event
Sudo a2enmod mpm_prefork
service Apache2 restart
Hinweis: Das oben Genannte ist erforderlich, da libphp7.so, das in php-Apache enthalten ist, nicht mit mod_mpm_event funktioniert, aber funktioniert nur mod_mpm_prefork statt. ( FS # 39218 )

Andernfalls erhalten Sie folgende Fehlermeldung:

Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe.  You need to recompile PHP.
AH00013: Pre-configuration failed
httpd.service: control process exited, code=exited status=1

Alternativ können Sie mod_proxy_fcgi verwenden (siehe Verwenden von php-fpm und mod_proxy_fcgi unten ).

0
user539644