Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 20/05/2020, à 08:42

DonutMan75

[RESOLU] PHP/MariaDB : page blanche ?

Bonjour à tous,
j'essaie d'accèder à MariaDB via un script php minimal par exemple celui-ci :

$ cat maria.php
<html>
   <head>
      <title>Connect to MariaDB Server</title>
   </head>

   <body>
      <?php
         $dbhost = 'localhost:3306';
         $dbuser = 'student';
         $dbpass = 'XXXXXXXX';
         $conn = mysql_connect($dbhost, $dbuser, $dbpass);
      
         if(! $conn ) {
            die('Could not connect: ' . mysql_error());
         }
         
         echo 'Connected successfully';
         mysql_close($conn);
      ?>
   </body>
</html>

Le problème ? La page localhost/maria.php est désespérément blanche (aucun message d'erreur).

Voici la configuration logicielle
- Apache/2.4.41 (Unix)
- php 7-4-5 fpm
- mysql  Ver 15.1 MariaDB

Ce que j'ai déjà testé :

1) La page test.php définie ci-dessous fonctionne correctement (donc le serveur httpd SAIT interpréter du php) :

$ cat test.php
<?php phpinfo(); ?>

Par ailleurs, j'ai positionné la directive suivante pour interpréter tout fichier se terminant par .php avec le moteur php-fpm

$ cat /usr/local/apache2/conf/httpd.conf
(...)
<IfModule proxy_fcgi_module>
	ProxyPassMatch	^(.*\.php)$	fcgi://127.0.0.1:9000/usr/local/apache2/htdocs/$1
</IfModule>

php-fpm tourne également

$ sudo netstat -anop | grep 9000
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      5389/php-fpm: maste  off (0.00/0/0)

2) A priori, je sais me connecter en CLI en utilisant les informations définie dans maria.php

$ mysql -u student -h 127.0.0.1 -P 3306 -p
<fonctionne>

3) Le port défini dans le fichier maria.php est bien le même que celui défini dans la conf de mariadb

$ cat /etc/mysql/mariadb.conf.d/50-server.cnf
(...)
# * Basic Settings
#
user                    = mysql
pid-file                = /run/mysqld/mysqld.pid
socket                  = /run/mysqld/mysqld.sock
#port                   = 3306
basedir                 = /usr
datadir                 = /var/lib/mysql
tmpdir                  = /tmp
lc-messages-dir         = /usr/share/mysql
#skip-external-locking

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address            = 127.0.0.1
(...)

4) Le serveur mariadb est bien à l'écoute

$ sudo netstat -anop | grep 3306
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      1031/mysqld          off (0.00/0/0)

Avez-vous des idées ? Des suggestions ?
Je suis novice dans mariadb/php donc il est probable que ce soit un truc trivial....

Merci d'avance et bonne journée smile

Donut

Dernière modification par DonutMan75 (Le 20/05/2020, à 14:53)

Hors ligne

#2 Le 20/05/2020, à 08:48

DonutMan75

Re : [RESOLU] PHP/MariaDB : page blanche ?

Bon le fait d'écrire le message et je me suis dit "tiens j'ai pas regardé les logs"... (pas bien, je sais)

Et voici ce qu'il y a dans les logs Apache :

[Wed May 20 08:38:42.110770 2020] [proxy_fcgi:error] [pid 5640:tid 140208787937024] [client ::1:33556] AH01071: Got error 'PHP message: PHP Fatal error:  Uncaught Error: Call to undefined function 
mysql_connect() in /usr/local/apache2/htdocs/maria.php:11\nStack trace:\n#0 {main}\n  thrown in /usr/local/apache2/htdocs/maria.php on line 11'

Bon je crois que j'avance là. Maintenant faut que je comprenne pourquoi il ne connait pas mysql_connect().......

Donut

Hors ligne

#3 Le 20/05/2020, à 08:58

bruno

Re : [RESOLU] PHP/MariaDB : page blanche ?

Bonjour,

Ton script PHP n'est pas compatible avec PHP 7. Je te laisse chercher pourquoi wink

Ce n'est pas le serveur http (Apache) qui interprète le PHP mais PHP-FPM.

Que fais la configuration d'apache dans /usr/local/apache2/conf/httpd.conf ? Tu as compilé toi même Apache ?

<IfModule proxy_fcgi_module>
	ProxyPassMatch	^(.*\.php)$	fcgi://127.0.0.1:9000/usr/local/apache2/htdocs/$1
</IfModule>

C'est une ancienne et mauvaise méthode pour transmettre les requêtes à PHP-FPM.
Depuis un bon moment on utilise le mod proxy_fcgid avec PHP-FPm en écoute sur un socket :

    <FilesMatch ".+\.ph(ar|p|tml)$">
        SetHandler "proxy:unix:/run/php/php7.3-fpm.sock|fcgi://localhost"
    </FilesMatch>

Je te conseille d’arrêter de suivre des tutos qui ont plus de 5 ans, de lire les docs officielles et surtout d'utiliser les paquets officiels Ubuntu (apache2, php-fpm) qui offre une configuation de base moderne et solide. wink

Hors ligne

#4 Le 20/05/2020, à 11:24

DonutMan75

Re : [RESOLU] PHP/MariaDB : page blanche ?

Hello bruno,
oui je crois que je vois comment me dépatouiller, la fonction mysql_connect() est obsolète.
Merci pour ta remarque qui est totalement justifiée. Je crois que mon erreur a été de partir du bouquin "Apache 2.4 Installation et configuration" aux editions ENI (qui date en effet de... 2015 mais je n'ai rien trouvé de plus récent). Je ne pensais pas que les méthodes pouvait évoluer si vite (surtout en ce qui concerne PHP et MySQL qui tournent ensemble depuis un bon moment quand même).
Enfin comme dit plus haut je suis novice sur ces sujets smile

Bonne journée et merci pour ton aide !

Donut

Hors ligne

#5 Le 20/05/2020, à 14:04

bruno

Re : [RESOLU] PHP/MariaDB : page blanche ?

Les livres c'est très bien mais il y a aussi plein de ressources sur le web pour actualiser;)
Effectivement mysql_connect a disparu avec PHP7, il faut maintenant utiliser mysqli ou PDO_MySQL

Hors ligne

#6 Le 20/05/2020, à 14:52

DonutMan75

Re : [RESOLU] PHP/MariaDB : page blanche ?

oui j'ai trouvé ça aussi.

Au passage je me suis rendu compte que je n'avais pas compilé php-fpm avec les bonnes options par ailleurs.
Pour mémo j'ai entré les infos suivant lors du configure de php-fpm :

$ more config.nice 
#! /bin/sh
#
# Created by configure

'./configure' \
'--prefix=/usr/local/php745-fpm' \
'--enable-fpm' \
'--with-mysqli' \
'--with-pdo-mysql' \
'--with-mysql-sock=/run/mysqld/mysqld.sock' \
"$@"

Cette fois-ci et en utilisant mysqli, ça fonctionne nickel smile

Je sais bien qu'avec un apt install, on peut avoir une installation LAMP aux petits oignons (et surtout avec les paramètres optimisés et sécurisés) mais comme dit dans je ne sais plus quel message, c'est avant tout un exercice didactique de ma part. Je n'ouvrirai pas ce serveur web sur l'extérieur de toute façon.

Merci encore pour ton aide, je passe le sujet à RESOLU du coup.

Bonne aprem à tous smile

D.

Hors ligne