Forum Programmation.php Php/Mysql : Gros problème

Posté par .
Tags : aucun
0
5
sept.
2005
Quel est la nature de ce problème ?

Apparemment impossible d'afficher une page PHP qui nécessite une connexion vers MySQL.

J'ai de manière incomplète dans 2 posts précédents exposé mes malheurs. Apparement ils n'inspirent pas grand monde. Moi en premier c'est pour cela que je fait une nouvelle tentative. J'espère que vous ne m'en voudrez pas


Pour être plus précis je vais vous faire un historique :

1/ En premier lieu je me suis apperçu que quelque chose clochait lorsque j'ai voulu configurer PhpMyAdmin :

Impossible d'afficher une autre page que la page d'accueil - celle où se
trouve le menu déroulant permettant de sélectionner la langue.

Par défaut le menu est positionné sur
English (en-iso-8859-1)
et il est possible d'aller sur la page française en sélectionnant
French (fr-iso-8859-1)
puis en tapant "Entrée sur le clavier" pour valider !

En effet ne s'affiche sur cette page que le logo de phpMyAdmin et le
champ du Menu des langues.

Un petit tour par l'affichage du Code Source de la Page m'informe que la
page ne s'est pas complètement affiché.
Son affichage s'est interrompu au niveau de :
Norvegian
si je suis dans la page en français et
Malay dans la page en anglais.
Soit environ la moitié des 112 options possibles.

Bien entendu pas de balises </select>
</body>, </html>, ni quoi que soit d'autres après cette dernière balise
(balise de fin d'option de Norvegian ou de Malay)


Je pensais que le problème provenait éventuellement de
libraries/auth/cookie.auth.lib.php
qui gère ce Menu .
Or ce fichier est exactement le même que celui de la phpMyAdmin-2.6.3,
que j'ai téléchargé en Tarball et décompressé dans un répertoire
Temporaire (taille identique et abscence d'info avec la cmde 'diff' dans
leur version initiale)

Ci-joints uelques paramètres de mon fichier config.inc.php

$cfg['PmaAbsoluteUri'] = '';
$cfg['blowfish_secret'] = 'blabla perso';

$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['port'] = '';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['extension'] = 'mysql';
$cfg['Servers'][$i]['compress'] = FALSE;
$cfg['Servers'][$i]['controluser'] = '';
$cfg['Servers'][$i]['controlpass'] = '';
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'monloginmysql';
$cfg['Servers'][$i]['password'] = 'monmotdepassemysql';

En fait à quelques exception près - que l'on trouve parmi les paramètres
ci-dessus - j'ai conservé le paramètrage par défaut.

J'ai bien essayé de modifier 2 d'entres eux
$cfg['DefaultLang'] = 'en-iso-8859-1';
// $cfg['Lang'] = 'en-iso-8859-1';

en les remplaçant par leur équivalent français
$cfg['DefaultLang'] = 'fr-iso-8859-1';
$cfg['Lang'] = 'fr-iso-8859-1';

Mais là le remède fut pire que le mal lui même.
Comment est ce possible me direz vous puisque la page ne s'affiche pas
en entier ?
C'est très simple : plus d'affichage de page du tout.

Pour finir il faut que je précise que je n'ai pas oublié de créer mon
compte Mysql et de vérifier qu'il était bien enregistré par
mysql> SELECT * FROM user;


2/ A partir de là j'ai voulu voir ce qui se passait avec Eskuel
(alternative à PhpMyAdmin) :

Résultat impossible d'afficher la page d'accueil, celle qui permet de le
configurer. Ni même la page setup.php.
En fait impossible d'afficher toutes les pages .php même si elles sont
en mode 644.
J'ai placé Eskuel/ dans /var/www/html/admin sous root comme phpMyAdmin



3/ N'ayant rien à me mettre sous la dent je tente le coup avec un site
SPIP :

J'ai testé la page index et la config du site (répertoire ecrire/)
Pour le second rien. Nada.
Par contre pour la page index j'ai le message suivant :

Site en travaux
Attention : un problème technique (serveur MySQL) empêche l'accès à
cette partie du site.
Merci de votre compréhension.



A la suite de quoi dans le fichier /var/log/httpd/www-access_log j'ai un
code de réponse des serveurs Web ayant une valeur de 301 (Moved
Permanently) pour 2 appli (Eskuel, SPIP)

127.0.0.1 - - [03/Sep/2005:09:53:18 +0200] "GET /admin/Eskuel HTTP/1.1"
301 448
127.0.0.1 - - [05/Sep/2005:15:21:14 +0200]
"GET /Programmes/Php/Applications/Portails/Publication/Spip/Monsite/ecrire HTTP/1.1" 301 506

Définition du CODE 301 :
L'URL demandée n'est plus utilisée par le serveur, et l'opération
précisée dans la requête n'a pas été exécutée. La nouvelle localisation
pour le document demandé est précisée dans l'en-tête Location.
Toute requête future pour ce document devra utiliser la nouvelle URL.
----------
Bon je veux bien mais ces appli se trouvent bien là !
En fait que dois je comprendre ?

Dans "/var/log/error_log" j'ai trouvé ces messages :

[Mon Sep 05 13:44:24 2005] [notice] suEXEC mechanism enabled
(wrapper: /usr/sbin/apache2-suexec)
[Mon Sep 05 13:44:25 2005] [notice] Digest: generating secret for digest
authentication ...
[Mon Sep 05 13:44:25 2005] [notice] Digest: done
PHP Warning: Unknown(): Unable to load dynamic library
'/usr/lib/php/extensions/imagick.so' - libdotneato.so.0: cannot open
shared object file: No such file or directory in Unknown on line 0
[Mon Sep 05 13:44:35 2005] [notice] Apache-AdvancedExtranetServer/2.0.53
(Mandriva Linux/PREFORK-9.1.102mdk) mod_ssl/2.0.53 OpenSSL/0.9.7e
PHP/4.3.10 mod_perl/1.999.21 Perl/v5.8.6 configured -- resuming normal
operations
[Mon Sep 05 14:03:24 2005] [notice] child pid 9137 exit signal
Segmentation fault (11)
[Mon Sep 05 14:03:28 2005] [notice] child pid 9141 exit signal
Segmentation fault (11)
[Mon Sep 05 14:03:29 2005] [notice] child pid 9138 exit signal
Segmentation fault (11)
[Mon Sep 05 14:03:29 2005] [notice] child pid 9139 exit signal
Segmentation fault (11)
[Mon Sep 05 14:03:29 2005] [notice] child pid 9140 exit signal
Segmentation fault (11)
[Mon Sep 05 14:03:31 2005] [notice] child pid 10683 exit signal
Segmentation fault (11)
[Mon Sep 05 14:03:43 2005] [notice] child pid 10666 exit signal
Segmentation fault (11)
[Mon Sep 05 14:03:43 2005] [notice] child pid 10670 exit signal
Segmentation fault (11)
[Mon Sep 05 14:03:43 2005] [notice] child pid 10684 exit signal
Segmentation fault (11)
[Mon Sep 05 14:03:43 2005] [notice] child pid 10685 exit signal
Segmentation fault (11)
[Mon Sep 05 14:03:43 2005] [notice] child pid 10690 exit signal
Segmentation fault (11)

Ils proviennent de Galeon je pense. En effet celui-ci ré-affiche au
Reboot les onglets ouverts lors de la fin de la session précédente.


Concernant le WARNING quelque chose m'échappe néanmoins :

# ll /usr/lib/php/extensions/imagick.so
592119 -rwxr-xr-x 1 root root 65044 avr 16
17:44 /usr/lib/php/extensions/imagick.so*

Je ne vois pas qui fait appel à cette extension (et où - dans quel
fichier ?).


la Commande 'ps' m'affiche entre autre chose

ps aux
apache 10671 0.0 1.4 28596 1840 ? S 14:03 0:00 httpd2
-f /etc/httpd/conf/httpd2.conf -DAPACHE2 -DHAVE_PERL -DHAVE_PHP4
-DHAVE_SSL -DHAVE_SUEXEC -DHAVE_ACCESS -DHAVE_ACTIONS -DHAVE_ALIAS
-DHAVE_ASIS -DHAVE_AUTH_ANON -DHAVE_AUTH_DBM -DHAVE_AUTH_DIGEST
-DHAVE_AUTH -DHAVE_AUTOINDEX -DHAVE_CASE_FILTER_IN -DHAVE_CASE_FILTER
-DHAVE_CERN_META -DHAVE_CGID -DHAVE_CGI -DHAVE_CHARSET_LITE -DHAVE_DIR
-DHAVE_DUMPIO -DHAVE_ENV -DHAVE_EXPIRES -DHAVE_EXT_FILTER -DHAVE_HEADERS
-DHAVE_IMAP -DHAVE_INCLUDE -DHAVE_INFO -DHAVE_LOG_CONFIG
-DHAVE_LOG_FORENSIC -DHAVE_LOGIO -DHAVE_MIME_MAGIC -DHAVE_MIME
-DHAVE_NEGOTIATION -DHAVE_REWRITE -DHAVE_SETENVIF -DHAVE_SPELING
-DHAVE_STATUS -DHAVE_UNIQUE_ID -DHAVE_USERDIR -DHAVE_USERTRACK
-DHAVE_VHOST_ALIAS

mais rien sur les PID 9137, 9141, 9138, 9139, 9140, 10683, 10666, 10670,
10684, 10685, 10690 des Segmentation fault (11).


Concernant Mysql

mysql > SELECT * FROM user;

J'ai bien l'affichage des comptes créés.


Y a t-il un acces restrictif à MySQL à partir de Apache/PHP du fait de
la configuration d'un Firewall/Shorewall ?
Je dis ça sans conviction, mais comme il me semble l'avoir lu quelque part que cela pouvait restreindre des accès à certains serveurs (base de données ? - j'en doute mais n'étant pas spécialiste....). Si c'est le cas où faut-il regarder ?


Je peux afficher le résultat de la fonction phpinfo()

PHPINFO() [Mandriva 2005]

mysql
MySQL Support enabled
Active Persistent Links 0
Active Links 0
Client API version 4.1.11
MYSQL_MODULE_TYPE none
MYSQL_SOCKET /var/lib/mysql/mysql.sock
MYSQL_INCLUDE no value
MYSQL_LIBS no value

Directive Local Value Master Value
mysql.allow_persistent On On
mysql.connect_timeout 60 60
mysql.default_host no value no value
mysql.default_password no value no value
mysql.default_port no value no value
mysql.default_socket no value no value
mysql.default_user no value no value
mysql.max_links Unlimited Unlimited
mysql.max_persistent Unlimited Unlimited
mysql.trace_mode Off Off

Identique à celui que j'ai sous la MDK 9.2


Globalement j'ai les RPM Suivants :
- apache2-mod_perl-2.0.53_2.0.0-0.RC4.6mdk.i586.rpm
- apache2-mod_php-2.0.53_4.3.10-7mdk.i586.rpm
- apache2-mod_ssl-2.0.53-8.1.102mdk.i586.rpm
- apache2-mod_suexec-2.0.53-7mdk.i586.rpm
- apache2-modules-2.0.53-9.1.102mdk.i586.rpm
- la vesion 4.3.10-3 de PHP
- MySQL-4.1.11-1mdk.i586.rpm
- MySQL-client-4.1.11-1mdk.i586.rpm
- MySQL-common-4.1.11-1mdk.i586.rpm
et entre autre
- php-ini-4.3.10-3mdk.noarch.rpm
- php-mysql-4.3.10-7mdk.i586.rpm
- libmysql12-4.0.23-2mdk.i586.rpm
- libmysql14-4.1.11-1mdk.i586.rpm


# cat /usr/share/doc/php-mysql-4.3.10/README.mysql
The php-mysql package contains a dynamic shared object (DSO) for PHP.
To activate it, make sure a file /etc/php.d/34_mysql.ini is present and
contains the line 'extension = mysql.so'.

# ll /etc/php.d/34_mysql.ini
19263 -rw-r--r-- 1 root root 21 mar 21 16:20 /etc/php.d/34_mysql.ini

# cat /etc/php.d/34_mysql.ini
extension = mysql.so

# ll /usr/lib/php/extensions/mysql.so
591161 -rwxr-xr-x 1 root root 44200 mar 21
16:20 /usr/lib/php/extensions/mysql.so*

Il me semble qu'à ce niveau tout est OK

Comme vous pouvez aisément l'imaginer je suis à l'écoute de tout conseil, de toute aide.
Mais pour cela ai je fournie assez de matière et plus encore de la bonne afin que vous me mettiez sur la voie ? Si ce n'est pas le cas n'hésitez pas à me questionner.

Je vous en remercie par avance.
  • # login mysql

    Posté par . Évalué à 1.

    -Tu as bien autoriser la connexion avec ton login mysql nouvellement créé (grant) ?
    - Rien dans /var/log/mysqld.log ?
    • [^] # Re: login mysql

      Posté par . Évalué à 1.

      Bonjour Ange

      Voici les derniers messages dans /var/log/mysqld/mysqld.log

      050906 14:25:08 mysqld started
      050906 14:25:10 InnoDB: Started; log sequence number 0 43634
      /usr/sbin/mysqld: ready for connections.
      Version: '4.1.11' socket: '/var/lib/mysql/mysql.sock' port: 0 Source distribution
      050906 14:32:06 [Note] /usr/sbin/mysqld: Normal shutdown

      050906 14:32:06 InnoDB: Starting shutdown...
      050906 14:32:09 InnoDB: Shutdown completed; log sequence number 0 43634
      050906 14:32:09 [Note] /usr/sbin/mysqld: Shutdown complete

      050906 14:32:09 mysqld ended

      050906 14:34:24 mysqld started
      050906 14:34:25 InnoDB: Started; log sequence number 0 43634
      /usr/sbin/mysqld: ready for connections.
      Version: '4.1.11' socket: '/var/lib/mysql/mysql.sock' port: 0 Source distribution


      Question Grant j'ai suivi les instructions d'Olivier Hoarau sur son site FUNIX http://www.funix.org/.(...) Je l'avais fait sur la 9.2 sans problème.

      De toute façon cela doit provenir en amont car phpMyAdmin propose dans un premier temps sous quelle langue on veut se connecter et dans la page suivante sous quel "user mysql". Or quelque soit mon choix (que je valide au clavier puisque la page est incomplète et pas de bouton Submit) de langue dans le (seul) menu de la page d'accueil tronquée je reviens à cette page mais dans la langue sélectionnée. Jamais je n'arrive à la page qui permet de sélectionner la Base de Donnée désirée et le User correspondant.


      En tous les cas cela fait plaisir d'avoir quelqu'un qui s'interresse à mon cas
      • [^] # Re: login mysql

        Posté par . Évalué à 1.

        C'est assez étrange comme problème ... Qu'est-ce qui se passe si tu crèes une page de test ?
        Une page du genre je fais un hello, j'me connecte a la base et print le contenu des tables test ?
        • [^] # Re: login mysql

          Posté par . Évalué à 1.

          Bonsoir

          Il est 02 heure du mat et j'ai récupéré la connexion il y a peu, et, LinuxFR à peine maintenant.
          Je pense (j'en suis même sûr) que les orages dans la région la nuit dernière en sont la cause et, que les services techniques de mon FAI sont toujours aussi performants (sic). En fait la question que nous posons dans le quartier c'est combien sont ils dans ce service ?

          Tout cela pour m'excuser de mon abscence de réponse ce mercredi.
          Je répondrais à ta demande demain.

          Néanmoins j'en suis désormais certain chaque fois que je me connecte aux pages PHP de phpMyAdmin ou Eskuel j'ai dans "/var/log/error_log" un message du type
          [Mon Sep 05 14:03:29 2005] [notice] child pid 9140 exit signal Segmentation fault (11)
          J'ignore toutefois à quoi cela correspond. J'ai bien trouvé cette page
          http://linuxfr.org/forums/14/5113.html(...)

          Bien que cela concerne Mandrake 10.1 (et non 10.2) et PHP5 (au lieu de PHP4 pour moi) il y aurait quelques similitudes entre les messages d'erreurs. Si c'est le cas cela n'envisage rien de bon car il n'y a point de mise à jour pour la LE 2005. De toute façon j'ai un doute car cet incident serait alors très courant.

          Par contre cela proviendrait il pas de RPM du style php-imagick-4.3.11_0.9.11-1mdk.i586.rpm ?
          cf le message

          PHP Warning: Unknown(): Unable to load dynamic library
          '/usr/lib/php/extensions/imagick.so' - libdotneato.so.0: cannot open
          shared object file: No such file or directory in Unknown on line 0

          J'ai du mal à imaginer le lien entre le problème et ce package. Demain je l'enlèverai. Maintenant je suis HS. C'est pas compliqué (rpm -e) mais ça ne me servirai à rien.

          PS :
          Il parait que l'on peut installer à la fois les RPM de PHP4 et de PHP5. Mais comment ça marche avec les programmes ?

          A demain ou plus exactement en fin de soirée CE jeudi

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.