webentwicklung-frage-antwort-db.com.de

Warnung: mysqli_real_connect (): (HY000/2002): Keine solche Datei oder dieses Verzeichnis in /private/tmp/wordpress/wp-includes/wp-db.php in Zeile 1452

Ich versuche, PHPUnit auszuführen, um ein WordPress-Plugin zu deaktivieren, aber der Fehler im Titel wird immer angezeigt.

Ich habe WP-CLI zum Einrichten der unittests verwendet, aber auch WP-CLI gibt einen ähnlichen Fehler aus, wenn ich versuche, es auszuführen.

Ich verwende MAMP, um die Datenbank auszuführen.

Ich habe WP-CLI und PHPUnit als phars eingerichtet, die in ~/.bash-profile einen Alias ​​haben, und mit dem Standard "php" von OS X ausgeführt wurden. Dies wird geändert und WP-CLI und PHPUnit ausgeführt mit der neuesten Version von PHP, die von MAMP bereitgestellt wurde, wurde WP-CLI repariert (es wurde gerade ausgeführt und es wurde eine Verbindung zur Datenbank hergestellt), aber PHPUnit warf immer noch den gleichen Fehler.

Ich habe versucht, die Datei "wp-config.php" zu bearbeiten, und den Host auf ": /path/to/mamp/mysql.socket", "localhost: /path/to/mamp/mysql.socket" und "127.0.0.1" eingestellt ", nichts davon hat geholfen.

Ich bin total festgefahren und weiß nicht, was ich als nächstes versuchen soll.

5

Ich bin gerade auf diesen Fehler gestoßen - haben Sie überprüft, ob das Schema vorhanden ist, das Ihr wp-config.php angibt?

In meinem Fall hatte ich völlig vergessen, es zu erstellen, daher war der Fix so einfach wie ein CREATE DATABASE wordpress.

Dieser Fehler ist auch aufgetreten, wenn der wp-config.php-Datenbankhost falsch ist (versuchen Sie, localhost und 127.0.0.1 zu vertauschen).

12
Doug Thompson

Stellen Sie zunächst sicher, dass MySql tatsächlich ausgeführt wird. Es wird keine Socket-Datei erstellt, wenn der Prozess nicht gestartet wurde.

netstat -tulpn | grep mysql

oder

ps -e | grep mysql

Wenn MySql ausgeführt wird, funktioniert das Ändern Ihres Datenbankhosts von localhost in 127.0.0.1 in der Datei wp-config.php. Dies ist jedoch nur eine Problemumgehung.

Wenn Sie localhost angeben, versucht die mysqli_real_connect()-Funktion über einen Unix-Socket, den sie nicht finden kann, eine Verbindung zu Ihrer Datenbank herzustellen (daher die Fehlermeldung "keine solche Datei".) Wenn Sie 127.0.0.1 angeben, versucht sie, mithilfe der Standardeinstellung TCP Port (normalerweise 3306), der funktioniert.

Dies behebt nicht das Problem, dass PHP nicht weiß, wo Sie Ihren MySql-Socket finden können. Sie müssen die folgenden Optionen in Ihrem php.ini konfigurieren. Der Speicherort des Sockets hängt von Ihrem Betriebssystem ab. Sie können ihn jedoch normalerweise finden, indem Sie locate mysql.sock ausführen. Hier sind die Einstellungen, die bei CentOS 6.8 für mich funktionieren.

php.ini

pdo_mysql.default_socket = /var/lib/mysql/mysql.sock
mysqli.default_socket = /var/lib/mysql/mysql.sock

Andere Systeme verwenden üblicherweise /tmp/mysqld.sock. Sie können den konfigurierten Speicherort überprüfen, indem Sie die MySql-Konfigurationsdatei my.cfg überprüfen.

Nachdem Sie PHP so konfiguriert haben, dass er auf den richtigen Socket-Speicherort verweist, starten Sie Apache/nginx neu, damit die neuen Einstellungen übernommen werden.

Jetzt können Sie localhost wie beabsichtigt verwenden.

5
Nilpo

Gehen Sie einfach zu Ihrem phpMyAdmin, klicken Sie auf Ihre Datenbank und kopieren Sie die IP-Adresse, an der der Dienst ausgeführt wird, und ersetzen Sie sie in Ihrer Datei wp-config.php: 

/ ** MySQL-Hostname */ Define ('DB_Host', 'localhost');

/ ** MySQL-Hostname */ Define ('DB_Host', 'ip_where_is_running_mysqlserver');

Ersetzen Sie Localhost in die IP des ausgeführten MySQL Servers

0
Gilson Jelembi

Es hat mich verwirrt, aber ich habe es schließlich gelöst.

Mein MySQL-Port ist 3308, daher ändere ich "127.0.0.1" in "localhost: 3308" 

$cfg['Servers'][$i]['Host'].

Es klappt!

Außerdem setze ich 

$cfg['Servers'][$i]['controluser'] = '';

$cfg['Servers'][$i]['controlpass'] = '';

Und...

$cfg['Servers'][$i]['auth_type'] = 'cookie';

Ich denke jedoch, dass der Schlüssel der Port ist.

0
Vicar