Question

Je suis nouveau dans CakePHP et je viens de terminer le processus de configuration, mais je ne comprends pas pourquoi Cake ne peut pas accéder à ma base de données MySQL. La page d’information sur les gâteaux indique que mon répertoire tmp est accessible en écriture, que FileEngine est utilisé pour la mise en cache (je ne sais pas ce que cela signifie) et que le fichier de configuration de ma base de données est présent, mais que CakePHP ne peut pas se connecter à la base de données.

Voici mes détails de configuration:

  • PHP 5.3 (pré-installé sur Snow Leopard)
  • MySQL 5.1.40 64 bits
  • CakePHP 1.2.4.8284

Voici les étapes que j'ai suivies:

  • Création d'un schéma MySQL appelé cake_blog
  • Création d'un utilisateur MySQL appelé cake_blog_user
  • Accorder à cake_blog_user les autorisations appropriées sur cake_blog @ localhost et cake_blog @%
  • a copié le fichier database.php.default dans le fichier database.php et a modifié les informations de connexion à la base de données selon les besoins

Voici les données de configuration pertinentes de database.php:

    var $default = array(
        'driver' => 'mysql',
        'persistent' => false,
        'host' => 'localhost',
        'login' => 'cake_blog_user',
        'password' => 'cake_blog_password',
        'database' => 'cake_blog',
        'prefix' => '',
    );

Est-ce que je manque quelque chose ici? Je dois également mentionner que si j'insère un echo mysql_error (); dans le fichier /cake/libs/view/pages/home.ctp juste avant de tester la connexion à la base de données, l'erreur affichée est " Aucun fichier ou répertoire de ce type. & Quot; Je ne sais pas de quel fichier ni du répertoire il s'agit.

Merci!

Était-ce utile?

La solution

S'il s'agit du socket, éditez simplement le fichier /etc/php.ini pour refléter ce qui suit

pdo_mysql.default_socket=/tmp/mysql.sock

et

mysql.default_socket = /tmp/mysql.sock

Autres conseils

En général, MySQL considère que "localhost" est "connecter via le socket unix" et "127.0.0.1" "via le port TCP". Avec des choses comme XAMPP (au moins sur mac), le fichier de socket Unix n’est pas là. Utilisez simplement 127.0.0.1 à la place.

var $default = array(
    'driver' => 'mysql',
    'persistent' => false,
    'host' => '127.0.0.1',
    'login' => 'cake_blog_user',
    'password' => 'cake_blog_password',
    'database' => 'cake_blog',
    'prefix' => '',
);

Devrait fonctionner tout le temps.

Je pense que vous pouvez également effectuer les opérations suivantes

<?php
    public $default = array(
        'driver' => 'mysql',
        'persistent' => false,
        'host' => 'localhost',
        'login' => 'cake_blog_user',
        'password' => 'cake_blog_password',
        'database' => 'cake_blog',
        'prefix' => '',
        'port' => '/tmp/mysql.sock',            
    )
?>

faire cela peut signifier que vous devez éditer le fichier database.php lorsque vous vous connectez au serveur de production.

Merci à tous de m'avoir orienté dans la bonne direction. Le fichier mysql.sock a été déplacé vers /tmp/mysql.sock au lieu de son emplacement par défaut sous /var/mysql/mysql.sock . La modification du fichier php.ini en conséquence a corrigé le problème.

vérifiez votre phpinfo et utilisez le socket indiqué. cela a fonctionné pour moi.

Sous Ubuntu, cela ne fonctionnera pas si vous avez installé les versions 7.0 et 5.6 de PHP.

Vous devrez changer si vous avez les deux versions:

Regardez d'abord si la version 7.0 est: la commande est php -v .

Prochaine

sudo a2dismod php7.0
sudo a2enmod php5.6
sudo service apache2 restart
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top