Verbinden über MySQL-Socket mit Zend Framework
-
22-07-2019 - |
Frage
Ich habe mit Zend Framework vor kurzem begonnen. Ich begann auf meinem lokalen XAMPP-Server zu entwickeln, die in Ordnung ging, aber wenn ich zu meinem 1und1 Account hochgeladen, ich erhalte die folgende Fehlermeldung:
Nachricht: SQLSTATE [HY000] [2002] Kann nicht eine Verbindung zum lokalen MySQL-Server über socket '/var/run/mysqld/mysqld.sock' (2)
Ich habe versucht, die resources.db.params.unix_socket Linie in meiner application.ini Datei zu den verschieden denjenigen in phpinfo erwähnt ändern, aber ohne Erfolg. Ich fand
Lösung 2 Ich hatte die Linie links: in meinem index.php wie aber hatte öffentlich geändert / .htaccess Es sieht aus wie die .htaccess wurde nicht gelesen werden. Ich habe die else-Anweisung in index.php ‚Produktion‘ die Produktionsdatenbankeinstellungen zu verwenden und es funktionierte. Ziemlich frustrierend. Ich frage mich, warum die Umgebungsvariablen nicht gelesen werden. Vielen Dank für Ihre Hilfe. defined('APPLICATION_ENV')
|| define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'development'));
SetEnv APPLICATION_ENV production
Andere Tipps
Wie Sie MySQL verbinden hängt von den Parametern an Sie weitergeben mysql_connect () . Wenn Sie ihm einen Dateipfad übergeben, das heißt. /var/run/mysqld/mysqld.sock
, es wird eine Socket-Verbindung versuchen. Wenn Sie es einen Hostnamen übergeben, wird eine TCP-Verbindung versuchen.
Sie müssen den Hostnamen (oder IP) des MySQL-Servers zu finden, und es wie folgt an:
mysql_connect('127.0.0.1:3306',$username,$password);
Quoten für ZF sind, können Sie einfach diese Datei in der Konfiguration angeben, wo Sie Ihre Datenbankeinstellungen zu speichern, oder wenn Sie mit der Datenbank verbinden die host
Einstellung mit:
$db = new Zend_Db_Adapter_Pdo_Mysql(array(
'host' => '127.0.0.1',
'username' => 'webuser',
'password' => 'xxxxxxxx',
'dbname' => 'test'
));
Bearbeiten : Wenn Sie ist Führen eines richtigen Hostnamen / Port als Host-Parameter mysql_connect()
und diese Nachricht bekommt, dann ist es sehr wahrscheinlich ein Server-Konfigurationsproblem <. / p>
Versuchen Sie, die mysql.default_socket
-Einstellung zu bewegen, entweder in der php.ini oder an der Spitze des Anwendungscode mit ini_set ()
ini_set('mysql.default_socket','/path/to/real/socket.sock');
Sie müssen herausfinden, wo die Socket-Datei ist. Oft ist es ‚/var/lib/mysql/mysql.sock‘, aber ich denke, es ist systemabhängig.
Zend Framework hat Option in db params unix_socket
, einfach verwenden
$config= array(
'db' => array(
'host' => 'localhost',
'username' => 'user',
'password' => 'pass',
'dbname' => 'dbname',
'dbprefix' => '',
'unix_socket' => '/var/lib/mysqld/mysqld.sock'
)
);