web-dev-qa-db-fra.com

php ne fonctionne pas dans Apache2

Après la mise à jour d'ubuntu 16.04 à 18.04, j'ai remarqué que php-curl ne fonctionnait pas, mais php fonctionnait bien. Je pensais que le problème était qu’Apache2 utilisait toujours php7.0 au lieu de php7.2, j’ai donc lancé

Sudo a2dismod php7.0
Sudo a2enmod php7.2
Sudo systemctl restart Apache2

maintenant, php ne fonctionne pas, mais le code HTML est rendu ...

cela retourne une page vierge:

<?php phpinfo(); ?> 

J'ai revérifié mon implémentation de phpinfo () en utilisant la version trouvée dans la page php: phpinfo -manual, répétée ci-dessous, ne fonctionne toujours pas avec Apache, mais cela fonctionne quand je lance dans bash ce qui suit:

my-machine:~$ php public_html/info.php

Voici une version éditée de http://php.net/manual/en/function.phpinfo.php

<?php    
phpinfo();
// Show just the module information.
// phpinfo(8) yields identical results.
phpinfo(INFO_MODULES);
?>

J'ai aussi essayé

Sudo update-alternatives --set php /usr/bin/php7.2

J'ai édité le fichier /etc/php/7.2/Apache2/php.ini comme indiqué sur une page, comme suit:

short_open_tag = On

Voici quelques informations sur ma configuration.

version php

php -v
PHP 7.2.7-0ubuntu0.18.04.2 (cli) (built: Jul  4 2018 16:55:24) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.7-0ubuntu0.18.04.2, Copyright (c) 1999-2018, by Zend Technologies

a2query

a2query -m php7.2
php7.2 (enabled by site administrator)

liste des modules Apache2 , remarque: "AH01574: le module php7_module est déjà chargé, le saut est", car j'exécute aussi = Sudo a2enmod php7.0 = en espérant pour revenir à ce que je pensais avoir ... J'ai désactivé php7.2, activer php7.0 et redémarrer Apache2 avec Sudo systemctl redémarrer Apache2, mais php n'est pas rendu.

Apache2ctl -M
[Sun Sep 02 18:03:43.185183 2018] [so:warn] [pid 4166] AH01574: module php7_module is already loaded, skipping
AH00558: Apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Loaded Modules:
 core_module (static)
 so_module (static)
 watchdog_module (static)
 http_module (static)
 log_config_module (static)
 logio_module (static)
 version_module (static)
 unixd_module (static)
 access_compat_module (shared)
 alias_module (shared)
 auth_basic_module (shared)
 authn_core_module (shared)
 authn_file_module (shared)
 authz_core_module (shared)
 authz_Host_module (shared)
 authz_user_module (shared)
 autoindex_module (shared)
 deflate_module (shared)
 dir_module (shared)
 dnssd_module (shared)
 env_module (shared)
 filter_module (shared)
 mime_module (shared)
 mpm_prefork_module (shared)
 negotiation_module (shared)
 php7_module (shared)
 reqtimeout_module (shared)
 setenvif_module (shared)
 status_module (shared)
 userdir_module (shared)

liste des paquets php installés

Sudo apt list --installed | grep -i php

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

libapache2-mod-php/bionic,bionic,now 1:7.2+60ubuntu1 all [installed]
libapache2-mod-php7.0/now 7.0.30-0ubuntu0.16.04.1 AMD64 [installed,local]
libapache2-mod-php7.2/bionic-updates,bionic-security,now 7.2.7-0ubuntu0.18.04.2 AMD64 [installed]
libphp-phpmailer/bionic,bionic,now 5.2.14+dfsg-2.3 all [installed,automatic]
php/bionic,bionic,now 1:7.2+60ubuntu1 all [installed]
php-bz2/bionic,bionic,now 1:7.2+60ubuntu1 all [installed,automatic]
php-cli/bionic,bionic,now 1:7.2+60ubuntu1 all [installed,automatic]
php-common/bionic,bionic,now 1:60ubuntu1 all [installed]
php-curl/bionic,bionic,now 1:7.2+60ubuntu1 all [installed]
php-db/bionic,bionic,now 1.9.2-2ubuntu1 all [installed]
php-Gd/bionic,bionic,now 1:7.2+60ubuntu1 all [installed,automatic]
php-getid3/bionic,bionic,now 1.9.15+dfsg-1 all [installed,automatic]
php-gettext/bionic,bionic,now 1.0.12-0.1 all [installed,automatic]
php-mbstring/bionic,bionic,now 1:7.2+60ubuntu1 all [installed,automatic]
php-mcrypt/now 1:7.0+35ubuntu6.1 all [installed,local]
php-mysql/bionic,bionic,now 1:7.2+60ubuntu1 all [installed]
php-pear/bionic,bionic,now 1:1.10.5+submodules+notgz-1ubuntu1 all [installed]
php-php-gettext/bionic,bionic,now 1.0.12-0.1 all [installed,automatic]
php-phpseclib/bionic,bionic,now 2.0.9-1 all [installed,automatic]
php-tcpdf/bionic,bionic,now 6.2.13+dfsg-1ubuntu1 all [installed,automatic]
php-tidy/bionic,bionic,now 1:7.2+60ubuntu1 all [installed]
php-xml/bionic,bionic,now 1:7.2+60ubuntu1 all [installed,automatic]
php-Zip/bionic,bionic,now 1:7.2+60ubuntu1 all [installed,automatic]
php5-common/now 5.5.9+dfsg-1ubuntu4.19 AMD64 [installed,local]
php5-json/now 1.3.2-2build1 AMD64 [installed,local]
php5-mysql/now 5.5.9+dfsg-1ubuntu4.19 AMD64 [installed,local]
php7.0/now 7.0.30-0ubuntu0.16.04.1 all [installed,local]
php7.0-cli/now 7.0.30-0ubuntu0.16.04.1 AMD64 [installed,local]
php7.0-common/now 7.0.30-0ubuntu0.16.04.1 AMD64 [installed,local]
php7.0-Gd/now 7.0.30-0ubuntu0.16.04.1 AMD64 [installed,local]
php7.0-json/now 7.0.30-0ubuntu0.16.04.1 AMD64 [installed,local]
php7.0-mbstring/now 7.0.30-0ubuntu0.16.04.1 AMD64 [installed,local]
php7.0-mcrypt/now 7.0.30-0ubuntu0.16.04.1 AMD64 [installed,local]
php7.0-mysql/now 7.0.30-0ubuntu0.16.04.1 AMD64 [installed,local]
php7.0-opcache/now 7.0.30-0ubuntu0.16.04.1 AMD64 [installed,local]
php7.0-readline/now 7.0.30-0ubuntu0.16.04.1 AMD64 [installed,local]
php7.0-xml/now 7.0.30-0ubuntu0.16.04.1 AMD64 [installed,local]
php7.2/bionic-updates,bionic-updates,bionic-security,bionic-security,now 7.2.7-0ubuntu0.18.04.2 all [installed,automatic]
php7.2-bz2/bionic-updates,bionic-security,now 7.2.7-0ubuntu0.18.04.2 AMD64 [installed,automatic]
php7.2-cli/bionic-updates,bionic-security,now 7.2.7-0ubuntu0.18.04.2 AMD64 [installed,automatic]
php7.2-common/bionic-updates,bionic-security,now 7.2.7-0ubuntu0.18.04.2 AMD64 [installed,automatic]
php7.2-curl/bionic-updates,bionic-security,now 7.2.7-0ubuntu0.18.04.2 AMD64 [installed]
php7.2-Gd/bionic-updates,bionic-security,now 7.2.7-0ubuntu0.18.04.2 AMD64 [installed,automatic]
php7.2-json/bionic-updates,bionic-security,now 7.2.7-0ubuntu0.18.04.2 AMD64 [installed,automatic]
php7.2-mbstring/bionic-updates,bionic-security,now 7.2.7-0ubuntu0.18.04.2 AMD64 [installed,automatic]
php7.2-mysql/bionic-updates,bionic-security,now 7.2.7-0ubuntu0.18.04.2 AMD64 [installed,automatic]
php7.2-opcache/bionic-updates,bionic-security,now 7.2.7-0ubuntu0.18.04.2 AMD64 [installed,automatic]
php7.2-readline/bionic-updates,bionic-security,now 7.2.7-0ubuntu0.18.04.2 AMD64 [installed,automatic]
php7.2-tidy/bionic-updates,bionic-security,now 7.2.7-0ubuntu0.18.04.2 AMD64 [installed,automatic]
php7.2-xml/bionic-updates,bionic-security,now 7.2.7-0ubuntu0.18.04.2 AMD64 [installed,automatic]
php7.2-Zip/bionic-updates,bionic-security,now 7.2.7-0ubuntu0.18.04.2 AMD64 [installed,automatic]
phpmyadmin/bionic,bionic,now 4:4.6.6-5 all [installed]

apt policy libapache2-mod-php7.2

Sudo apt policy libapache2-mod-php7.2
libapache2-mod-php7.2:
  Installed: 7.2.7-0ubuntu0.18.04.2
  Candidate: 7.2.7-0ubuntu0.18.04.2
  Version table:
 *** 7.2.7-0ubuntu0.18.04.2 500
        500 http://us.archive.ubuntu.com/ubuntu bionic-updates/main AMD64 Packages
        500 http://security.ubuntu.com/ubuntu bionic-security/main AMD64 Packages
        100 /var/lib/dpkg/status
     7.2.3-1ubuntu1 500
        500 http://us.archive.ubuntu.com/ubuntu bionic/main AMD64 Packages

ls -l/etc/Apache2/mods-enabled/php *

ls -l /etc/Apache2/mods-enabled/php*
lrwxrwxrwx 1 root root 29 Sep  2 18:48 /etc/Apache2/mods-enabled/php7.2.conf -> ../mods-available/php7.2.conf
lrwxrwxrwx 1 root root 29 Sep  2 18:48 /etc/Apache2/mods-enabled/php7.2.load -> ../mods-available/php7.2.load

exemple de journaux Apache2

[Mon Sep 03 00:06:52.805155 2018] [mpm_prefork:notice] [pid 5161] AH00163: Apache/2.4.29 (Ubuntu) configured -- resuming normal operations
[Mon Sep 03 00:06:52.805181 2018] [core:notice] [pid 5161] AH00094: Command line: '/usr/sbin/Apache2'
[Sun Sep 02 13:39:30.728738 2018] [:error] [pid 4109] [client 127.0.0.1:36468] PHP Notice:  Only variables should be assigned by reference in /home/go/public_html/index.php on line 115
[Sun Sep 02 13:39:30.739232 2018] [:error] [pid 4109] [client 127.0.0.1:36468] PHP Notice:  Undefined variable: year in /home/go/public_html/calendar.php on line 38
[Sun Sep 02 13:39:30.739253 2018] [:error] [pid 4109] [client 127.0.0.1:36468] PHP Notice:  Undefined variable: month in /home/go/public_html/calendar.php on line 40
[Sun Sep 02 13:39:30.739256 2018] [:error] [pid 4109] [client 127.0.0.1:36468] PHP Notice:  Undefined variable: year in /home/go/public_html/calendar.php on line 42
[Sun Sep 02 13:39:30.739260 2018] [:error] [pid 4109] [client 127.0.0.1:36468] PHP Notice:  Undefined variable: year in /home/go/public_html/calendar.php on line 46
[Sun Sep 02 13:39:30.739278 2018] [:error] [pid 4109] [client 127.0.0.1:36468] PHP Notice:  Undefined variable: month in /home/go/public_html/calendar.php on line 52
[Sun Sep 02 13:39:30.739281 2018] [:error] [pid 4109] [client 127.0.0.1:36468] PHP Notice:  Undefined variable: month in /home/go/public_html/calendar.php on line 56
[Sun Sep 02 13:39:35.889200 2018] [:error] [pid 4111] [client 127.0.0.1:36478] PHP Notice:  Only variables should be assigned by reference in /home/go/public_html/show-reading-list.php on line 7, referer: http://localhost/~go/

les variables mentionnées dans les journaux sont dans ces fichiers php ... et je vois les mêmes erreurs dans les journaux précédents générés avant la mise à jour.

3
tempestcat

php et php-curl fonctionnent maintenant.

Ce qui m'a amené à la réponse, c'est de remarquer une différence entre php7.0.conf et php7.2.conf dans/etc/Apache2/mods-available /, qui n'affecterait que la manière dont php était exécuté dans le répertoire userdir. J'ai ensuite vérifié si php fonctionnait sur le serveur et j'ai constaté qu'il le faisait.

En résumé, je pense qu'après la mise à jour d'ubuntu 16.04 et 18.04, j'avais besoin de

  • désactiver php7.0 et activer php7.2: cela créait un problème avec les scripts php du répertoire utilisateur, mais corrigeait php-curl sous le serveur. En d'autres termes, à ce stade php un php-curl fonctionnait à l'adresse du serveur;
  • éditez le fichier php7.2.conf et commentez la section <IfModule mod_userdir.c>;
  • pour ceux qui lisent toute la question, je n'ai pas gardé l'édition dans le fichier php.ini;
  • effacé le cache de firefox: la modification n'a pas résolu le problème userdir jusqu'à ce que je fasse ce qui suit: ouvrir menu-> préférences-> confidentialité et sécurité-> historique-> utiliser les paramètres personnalisés pour l'historique-> effacer l'historique-> paramètres-> historique -> cache (toutes les autres cases non cochées)

php et php-curl fonctionnent maintenant dans userdir.

Merci à tous ceux qui ont laissé un commentaire.

2
tempestcat

[[Ajoutant ceci comme réponse uniquement pour faciliter le formatage]) J'ai été aux prises avec ce problème après une nouvelle installation d'Ububtu18.04 sur un disque SSD. utilisait ~/public_html directory dans mon compte utilisateur en tant que racine du document. Aucun code PHP n'a été analysé par Apache.

Enfin, la question détaillée ci-dessus m'a aidé à déterminer que, alors que php ~/public_html/test.php fonctionnait, l'accès aux fichiers php depuis le navigateur ne fonctionnait pas.

Solution: Autoriser Apache2 à exécuter PHP dans les répertoires de l'utilisateur. (comme dans la réponse ci-dessus). Recherchez et modifiez le fichier php7.2.conf. Dans mon cas, il se trouvait à /etc/Apache2/mods-enabled/php7.2.conf. Ces lignes devaient être commentées:

# Running PHP scripts in user directories is disabled by default
# 
# To re-enable PHP in user directories comment the following lines
# (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
# prevents .htaccess files from disabling it.
#<IfModule mod_userdir.c>
#    <Directory /home/*/public_html>
#        php_admin_flag engine Off
#    </Directory>
#</IfModule> 

Apache2 redémarré et cela a fonctionné maintenant. Vous devrez peut-être effacer la page du cache du navigateur.

Merci à @tempestcat J'espère que cela aidera d'autres personnes à l'avenir.

0
R.S.