Starting with Zend Tutorial – Zend_DB_Adapter throws Exception: “SQLSTATE[HY000] [2002] No such file or directory”

I would say that you have a problem connecting from PHP to MySQL…

Something like PHP trying to find some socket file, and not finding it, maybe ?

(I’ve had this problem a couple of times — not sure the error I got was exactly this one, though)

If you are running some Linux-based system, there should be a my.cnf file somewhere, that is used to configure MySQL — on my Ubuntu, it’s in /etc/mysql/.

In this file, there might be something like this :

socket = /var/run/mysqld/mysqld.sock

PHP need to use the same file — and, depending on your distribution, the default file might not be the same as the one that MySQL uses.

In this case, adding these lines to your php.ini file might help :

mysql.default_socket = /var/run/mysqld/mysqld.sock
mysqli.default_socket = /var/run/mysqld/mysqld.sock
pdo_mysql.default_socket = /var/run/mysqld/mysqld.sock

(You’ll need to restart Apache so the modification to php.ini is taken into account)

The last one should be enough for PDO, which is used by Zend Framework — but the two previous ones will not do any harm, and can be useful for other applications.

If this doesn’t help : can you connect to your database using PDO, in another script, that’s totally independant of Zend Framework ?

i.e. does something like this work (quoting) :

$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user="dbuser";
$password = 'dbpass';

try {
    $dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

If no, the problem is definitly not with ZF, and is a configuration / installation problem of PHP.

If yes… Well, it means you have a problem with ZF, and you’ll need to give us more informations about your setup (like your DSN, for instance ? )

Leave a Comment