Вопрос

Я недавно начал использовать 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'
  )
);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top