Соединение через сокет MySQL с Zend Framework
-
22-07-2019 - |
Вопрос
Я недавно начал использовать Zend Framework. Я начал разработку на своем локальном сервере XAMPP, который прошел нормально, но при загрузке в учетную запись 1and1 я получаю следующую ошибку:
Сообщение: SQLSTATE [HY000] [2002] Не могу подключиться к локальному серверу MySQL через сокет '/var/run/mysqld/mysqld.sock' (2) р>
Я попытался изменить строку resources.db.params.unix_socket в моем файле application.ini на другие, упомянутые в phpinfo, но безуспешно. Я нашел здесь , что кто-то ответил
Является ли сервер MySQL на том же хосте как веб-приложение? Если бы не ты не может использовать сокетное соединение, и нужно будет подключиться через TCP.
Я думаю, что это так с моим веб-хостинга. Как я могу изменить ZF для подключения через TCP вместо этого? В настоящее время я использую PDO_MYSQL.
Решение 2
Я покинул линию:
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'development'));
в моем index.php как есть, но изменил public / .htaccess на
SetEnv APPLICATION_ENV production
Похоже, что .htaccess не читался. Я изменил оператор else в index.php на «production», чтобы использовать настройки производственной базы данных, и это сработало. Довольно расстраивает. Интересно, почему переменная окружения не читалась. Спасибо за вашу помощь.
Другие советы
Способ подключения к MySQL зависит от параметров, передаваемых вами в mysql_connect () . Если вы передадите ему путь к файлу, т.е. /var/run/mysqld/mysqld.sock
, он попытается подключиться через сокет. Если вы передадите ему имя хоста, он попытается установить TCP-соединение.
Вам нужно найти имя хоста (или IP-адрес) сервера MySQL и подключиться к нему следующим образом:
<код> mysql_connect ( '127.0.0.1:3306', $ имя пользователя, пароль $); код>
Коэффициенты для ZF, вы можете просто указать это в файле конфигурации, где вы храните настройки вашей базы данных, или когда вы подключаетесь к базе данных, используя настройку host
:
$db = new Zend_Db_Adapter_Pdo_Mysql(array(
'host' => '127.0.0.1',
'username' => 'webuser',
'password' => 'xxxxxxxx',
'dbname' => 'test'
));
Изменить . Если вы передаете правильное имя хоста / порт в качестве параметра хоста в mysql_connect ()
и получаете это сообщение, то оно скорее всего, проблема с конфигурацией сервера.
Попробуйте изменить настройку mysql.default_socket
в файле php.ini или в верхней части кода приложения, используя ini_set ()
ini_set('mysql.default_socket','/path/to/real/socket.sock');
Вы должны выяснить, где находится файл сокета. Часто это /var/lib/mysql/mysql.sock, но я думаю, что это зависит от системы.
Zend Framework имеет параметр в параметрах db unix_socket
, просто используйте его
$config= array(
'db' => array(
'host' => 'localhost',
'username' => 'user',
'password' => 'pass',
'dbname' => 'dbname',
'dbprefix' => '',
'unix_socket' => '/var/lib/mysqld/mysqld.sock'
)
);