111 votes

PHP - MySQL connexion ne fonctionne pas: 2002 Aucun fichier ou répertoire

J'ai essayé d'utiliser WordPress, et ça ne marcherait jamais. J'ai apache et mysql en cours d'exécution, les comptes et la base de données sont tous mis en place, il y a pas de fautes de frappe. J'ai donc essayé de faire une simple connexion:

<?php
    $conn = mysql_connect('localhost', 'USER', 'PASSWORD');
    if(!$conn) {
        echo 'Error: ' . mysql_errno() . ' - ' . mysql_error();
    }
?>

Et j'ai toujours ceci:

Erreur: 2002 - Aucun fichier ou annuaire

Ce fichier ou un répertoire?? Toute idée de ce qui pourrait être la cause? Merci.

Aussi, je suis sur un mac, Snow Leopard, avec construit dans apache et le x86_64 dmg d'installation de MySQL.

Mise à JOUR: Ok, j'ai trouvé que le support est à /tmp/mysql.chaussette, donc En php.ini, j'ai remplacé toutes les occurrences du chemin d'accès incorrect avec qui. Je vais voir si cela fonctionne maintenant.

167voto

bryan kennedy Points 1666

J'ai eu un problème similaire et a été en mesure de le résoudre en s'attaquant mon mysql avec 127.0.0.1 au lieu de localhost.

Cela signifie probablement que j'ai quelque chose de mal dans mes hôtes de l'installation, mais cette solution rapide get me va pour l'instant.

104voto

Alec Gorge Points 6875

Si vous utilisez Linux: le chemin d'accès à la base de données mysql.chaussette de fichier est incorrect. C'est généralement parce que vous utilisez (LAMPP) XAMPP et il n'est pas dans /tmp/mysql.chaussette

Ouvrez le php.fichier ini et trouvez cette ligne:

mysql.default_socket

Et de le rendre

mysql.default_socket = /path/to/mysql.sock

41voto

Jacek Laskowski Points 6668

C'est pour Mac OS X avec le natif d'installation d'Apache HTTP et personnalisée de l'installation de MySQL.

La réponse est basée sur @alec-gorge est une excellente réponse, mais depuis que j'ai eu à google certains changements spécifiques pour l'avoir configuré dans ma configuration, surtout Mac OS X-spécifique, je pensais que je voudrais ajouter ici par souci d'exhaustivité.

Activer le support de PHP5 HTTP Apache

Assurez-vous que le support de PHP5 est activé en /etc/apache2/httpd.conf.

Modifier le fichier avec sudo vi /etc/apache2/httpd.conf (entrez le mot de passe lors de la demande) et décommenter (enlever ; depuis le début de) la ligne de charge de la php5_module module.

LoadModule php5_module libexec/apache2/libphp5.so

Le démarrage d'Apache HTTP avec sudo apachectl start (ou restart si elle est déjà lancé et doit être redémarré pour re-lire le fichier de configuration).

Assurez-vous que /var/log/apache2/error_log contient une ligne qui vous indique le php5_module est activé, vous devriez voir PHP/5.3.15 (ou similaire).

[notice] Apache/2.2.22 (Unix) DAV/2 PHP/5.3.15 with Suhosin-Patch configured -- resuming normal operations

Recherche de Socket nom du fichier

Lorsque MySQL est en place et en cours d'exécution (avec ./bin/mysqld_safe) il devrait y avoir de débogage de lignes imprimées sur la console que vous dire où vous pouvez trouver les fichiers journaux. Remarque le nom d'hôte dans le fichier nom - localhost dans mon cas - qui peut être différent pour votre configuration.

Le fichier qui vient après l' Logging to est important. C'est là que MySQL enregistre son travail.

130309 12:17:59 mysqld_safe Logging to '/Users/jacek/apps/mysql/data/localhost.err'.
130309 12:17:59 mysqld_safe Starting mysqld daemon with databases from /Users/jacek/apps/mysql/data

Ouvrez l' localhost.err le fichier (encore une fois, la vôtre peut être nommé différemment), c'est à dire tail -1 /Users/jacek/apps/mysql/data/localhost.err pour trouver le fichier de socket du nom -, il devrait être la dernière ligne.

$ tail -1 /Users/jacek/apps/mysql/data/localhost.err
Version: '5.5.27'  socket: '/tmp/mysql.sock'  port: 3306  MySQL Community Server (GPL)

Remarque l' socket: - c'est le fichier de socket à utiliser dans php.ini.

La configuration de PHP5 avec le support MySQL - /etc/php.ini

En parlant de php.ini...

En /etc répertoire de /etc/php.ini.par défaut le fichier. Le copier dans /etc/php.ini.

sudo cp /etc/php.ini.default /etc/php.ini

Ouvrez /etc/php.ini et de regarder pour mysql.default_socket.

sudo vi /etc/php.ini

La valeur par défaut de mysql.default_socket est /var/mysql/mysql.sock. Vous devez modifier la valeur que vous avez noté auparavant, il a été /tmp/mysql.sock dans mon cas.

Remplacer l' /etc/php.ini fichier pour prendre en compte le fichier de socket du nom:

mysql.default_socket = /tmp/mysql.sock

Vérification finale

Redémarrez Apache HTTP.

sudo apachectl restart 

Vérifiez les journaux, si il n'y a pas d'erreur liées à PHP5. Pas d'erreur signifie que vous avez terminé et PHP5 avec MySQL devrait fonctionner correctement. Bravo!

10voto

Todd Moses Points 7192

Tout d'abord, s'assurer de MySQL est en cours d'exécution. Commande: démarrer mysqld

Si vous ne pouvez toujours pas vous connecter, puis: Quel est votre /etc/my.cnf ressembler?

Les 2 autres postes sont exacts et que vous devez vérifier votre prise parce que 2002 est une erreur de socket.

Un excellent tutoriel sur le paramétrage de la LAMPE est: http://library.linode.com/lamp-guides/centos-5.3/index-print

6voto

Myles Points 6186

J'aimerais vérifier votre php.fichier ini et de vérifier la base de données mysql.default_socket est réglé correctement et vérifiez également que votre mysqld est correctement configuré avec un fichier de socket, il peut accéder. Par défaut est "/tmp/mysql.chaussette".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X