Domanda

Di recente ho iniziato a utilizzare Zend Framework. Ho iniziato a sviluppare sul mio server XAMPP locale che è andato bene, ma quando ho caricato sul mio account 1and1, continuo a ricevere il seguente errore:

  

Messaggio: SQLSTATE [HY000] [2002] Impossibile   connettersi al server MySQL locale tramite   socket '/var/run/mysqld/mysqld.sock'   (2)

Ho provato a cambiare la linea resources.db.params.unix_socket nel mio file application.ini con quelli diversi menzionati in phpinfo ma senza successo. Ho trovato qui a cui qualcuno ha risposto

  

Il server MySQL si trova sullo stesso host   come l'applicazione web? Altrimenti, tu   non è possibile utilizzare una connessione socket e   dovrà connettersi tramite TCP.

Penso che sia il caso del mio host web. Come posso cambiare ZF per connettermi invece tramite TCP? Attualmente sto usando PDO_MYSQL.

È stato utile?

Soluzione 2

Avevo lasciato la riga:

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

nel mio index.php com'è ma aveva cambiato public / .htaccess in

SetEnv APPLICATION_ENV production

Sembra che .htaccess non sia stato letto. Ho cambiato l'istruzione else in index.php in 'produzione' per usare le impostazioni del database di produzione e ha funzionato. Abbastanza frustrante. Mi chiedo perché non sia stata letta la variabile d'ambiente. Grazie per il tuo aiuto.

Altri suggerimenti

La modalità di connessione a MySQL dipende dai parametri passati a mysql_connect () . Se gli passi un percorso di file, ad es. /var/run/mysqld/mysqld.sock , tenterà una connessione socket. Se gli passi un nome host, tenterà una connessione TCP.

Devi trovare il nome host (o IP) del server mysql e collegarti ad esso in questo modo:

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

Le quote sono per ZF, puoi semplicemente specificarlo nel file di configurazione in cui memorizzi le impostazioni del tuo database, o quando ti connetti al database usando l'impostazione host :

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

Modifica : se stai passando un nome host / porta appropriato come parametro host a mysql_connect () e ricevi questo messaggio, allora è molto probabilmente un problema di configurazione del server.

Prova a modificare l'impostazione mysql.default_socket , in php.ini o nella parte superiore del codice dell'applicazione utilizzando ini_set ()

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

Dovrai capire dove si trova il file socket. Spesso è "/var/lib/mysql/mysql.sock", ma penso che dipenda dal sistema.

Zend Framework ha un'opzione in db params unix_socket , basta usarlo

 $config= array(
 'db' => array(
'host'   => 'localhost',
'username' => 'user',
'password' => 'pass',
'dbname' => 'dbname',
'dbprefix' => '',
'unix_socket' => '/var/lib/mysqld/mysqld.sock'
  )
);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top