Frage

Ich bin neu in CakePHP und bin gerade durch den Konfigurationsprozess läuft, aber bin ratlos, warum Kuchen kann nicht mein Zugang MySQL-Datenbank. The Cake Info-Seite sagt mein tmp-Verzeichnis beschreibbar ist, wird die FileEngine für das Caching verwendet wird (nicht wissen, was das bedeutet), und meine Datenbank-Konfigurationsdatei vorhanden ist, aber das CakePHP nicht mit der Datenbank verbinden kann.

Hier sind meine Setup-Details:

  • PHP 5.3 (vorinstalliert auf Snow Leopard)
  • MySQL 5.1.40 64-bit
  • CakePHP 1.2.4.8284

Hier sind die Schritte, die ich ging durch:

  • Erstellt ein MySQL-Schema namens cake_blog
  • Erstellt ein MySQL-Benutzer namens cake_blog_user
  • Zugegeben cake_blog_user die entsprechenden Berechtigungen auf cake_blog @ localhost und cake_blog @%
  • Kopiert die database.php.default Datei database.php und bearbeitet die Datenbankverbindungsdaten entsprechend

Hier sind die jeweiligen Konfigurationsdaten von database.php:

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

Bin ich etwas fehlt hier? Ich sollte auch erwähnen, dass, wenn ich eine echo mysql_error(); in die /cake/libs/view/pages/home.ctp Datei richtig ein, bevor es die Datenbankverbindung überprüft, angezeigt wird der Fehler „Keine solche Datei oder ein Verzeichnis.“ Ich habe keine Ahnung, welche Datei oder das Verzeichnis es spricht.

Danke!

War es hilfreich?

Lösung

Wenn es die Buchse ist einfach bearbeiten /etc/php.ini folgendes reflektieren

pdo_mysql.default_socket=/tmp/mysql.sock

und

mysql.default_socket = /tmp/mysql.sock

Andere Tipps

Was beißt mich in der Regel in es ist, dass MySQL von ‚localhost‘ denkt als ‚Verbindung durch den Unix-Socket‘ und ‚127.0.0.1‘ ‚verbindet durch die TCP-Port‘. Mit Dingen wie XAMPP (zumindest auf dem Mac) die Unix-Socket-Datei ist nicht da. Verwenden Sie einfach 127.0.0.1 statt.

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

Wenn die ganze Zeit arbeiten.

Ich glaube, Sie können auch das folgende tun

<?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',            
    )
?>

Dabei könnte bedeuten, müssen Sie die database.php Datei bearbeiten, wenn Sie live auf dem Produktionsserver gehen.

Danke an alle für mich in der richtigen Richtung. Die mysql.sock Datei wurde statt der Standardposition bei /tmp/mysql.sock /var/mysql/mysql.sock bewegt. die Datei php.ini bearbeiten zu reflektieren dies das Problem behoben hat.

Überprüfen Sie Ihre phpinfo und verwenden Sie die Buchse aufgeführt. dass für mich gearbeitet.

Auf Ubuntu, wenn Sie beide 7.0 und 5.6 Versionen von PHP dies nicht funktionieren installiert.

Youll müssen wechseln, wenn Sie beide Versionen haben:

erste Schau mal ob ist Version 7.0. Der Befehl php -v

Als nächstes do

sudo a2dismod php7.0
sudo a2enmod php5.6
sudo service apache2 restart
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top