Pergunta

Tenho recentemente começou a usar Zend Framework. Comecei a desenvolver no meu servidor XAMPP local, que foi muito bem, mas quando eu enviados para minha conta 1and1, eu continuo recebendo o seguinte erro:

Mensagem: SQLSTATE [HY000] [2002] não pode conectar ao servidor MySQL local através de socket '/var/run/mysqld/mysqld.sock' (2)

Eu tentei mudar a linha resources.db.params.unix_socket no meu arquivo application.ini aos diferentes dos mencionados no phpinfo mas sem sucesso. Eu encontrei aqui que alguém respondeu

O servidor MySQL no mesmo host como a aplicação web? Se não, você não pode usar uma conexão de soquete, e será necessário conectar via TCP.

Eu acho que é o caso com minha host. Como posso alterar ZF para conectar via TCP em vez disso? Atualmente, estou usando PDO_MYSQL.

Foi útil?

Solução 2

Eu tinha deixado a linha:

defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'development'));

Na minha index.php como é, mas tinha mudado public / .htaccess para

SetEnv APPLICATION_ENV production

Parece que o .htaccess não estava sendo lido. Eu mudei a instrução else em index.php a 'produção' para usar as configurações de banco de dados de produção e funcionou. frustrante bastante. Eu me pergunto por que a variável de ambiente não estava sendo lido. Obrigado por sua ajuda.

Outras dicas

Como você se conectar ao MySQL depende dos parâmetros que você passa para mysql_connect () . Se você passar um caminho de arquivo, ie. /var/run/mysqld/mysqld.sock, que vai tentar uma conexão socket. Se você passar um nome de host, ele tentará uma conexão TCP.

Você precisa encontrar o nome do host (ou IP) do servidor mysql e conectar a ele assim:

mysql_connect('127.0.0.1:3306',$username,$password);

As probabilidades são para ZF, você pode apenas especificar esta no arquivo de configuração onde você armazena suas configurações de banco de dados, ou quando você se conectar ao banco de dados usando a configuração host:

$db = new Zend_Db_Adapter_Pdo_Mysql(array(
    'host'     => '127.0.0.1',
    'username' => 'webuser',
    'password' => 'xxxxxxxx',
    'dbname'   => 'test'
));

Editar :. Se você são passando uma adequada hostname / port como o parâmetro host para mysql_connect() e recebendo esta mensagem, então é mais provável um problema de configuração do servidor

Tente ajustar a configuração mysql.default_socket, quer no php.ini ou na parte superior do seu código do aplicativo usando ini_set ()

ini_set('mysql.default_socket','/path/to/real/socket.sock');

Você vai ter que descobrir onde está o arquivo de socket é. Muitas vezes é '/var/lib/mysql/mysql.sock', mas eu acho que é dependente do sistema.

Zend Framework tem opção no db params unix_socket, simplesmente usá-lo

 $config= array(
 'db' => array(
'host'   => 'localhost',
'username' => 'user',
'password' => 'pass',
'dbname' => 'dbname',
'dbprefix' => '',
'unix_socket' => '/var/lib/mysqld/mysqld.sock'
  )
);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top