Question

J'ai récemment commencé à utiliser Zend Framework. J'ai commencé à développer sur mon serveur XAMPP local, ce qui s'est bien passé, mais lorsque je télécharge sur mon compte 1and1, le message d'erreur suivant s'affiche:

  

Message: SQLSTATE [HY000] [2002] ne peut pas   se connecter au serveur MySQL local via   socket '/var/run/mysqld/mysqld.sock'   (2)

J'ai essayé de modifier la ligne resources.db.params.unix_socket de mon fichier application.ini par celle spécifié par phpinfo mais sans succès. J'ai trouvé ici une personne a répondu

  

Le serveur MySQL est-il sur le même hôte?   comme application web? Si non, vous   ne peut pas utiliser une connexion socket, et   vous devrez vous connecter via TCP.

Je pense que c'est le cas de mon hébergeur. Comment puis-je changer ZF pour se connecter via TCP à la place? J'utilise actuellement PDO_MYSQL.

Était-ce utile?

La solution 2

J'avais quitté la ligne:

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

dans mon index.php tel quel, mais avait changé public / .htaccess en

SetEnv APPLICATION_ENV production

Il semble que le fichier .htaccess n’ait pas été lu. J'ai changé l'instruction else dans index.php en 'production' pour utiliser les paramètres de la base de données de production et cela a fonctionné. Assez frustrant. Je me demande pourquoi la variable d'environnement n'a pas été lue. Merci pour votre aide.

Autres conseils

La façon dont vous vous connectez à MySQL dépend des paramètres que vous transmettez à mysql_connect () . Si vous lui passez un chemin de fichier, c'est à dire. /var/run/mysqld/mysqld.sock , il va tenter une connexion par socket. Si vous lui transmettez un nom d’hôte, il tentera une connexion TCP.

Vous devez trouver le nom d'hôte (ou IP) du serveur mysql et vous y connecter comme suit:

mysql_connect ('127.0.0.1:3306', $ nom d'utilisateur, $ mot de passe);

Les chances sont pour ZF, vous pouvez simplement le spécifier dans le fichier de configuration où vous stockez vos paramètres de base de données ou lorsque vous vous connectez à la base de données à l'aide du paramètre hôte :

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

Modifier : si vous transmettez un nom d'hôte / port approprié en tant que paramètre d'hôte à mysql_connect () et obtenez ce message, est très probablement un problème de configuration du serveur.

Essayez d’ajuster le paramètre mysql.default_socket , soit dans le fichier php.ini, soit en haut du code de votre application, en utilisant ini_set ()

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

Vous devrez trouver où se trouve le fichier de socket. Il s’agit souvent de '/var/lib/mysql/mysql.sock', mais je pense que cela dépend du système.

Zend Framework a une option dans db params unix_socket , utilisez-le simplement

 $config= array(
 'db' => array(
'host'   => 'localhost',
'username' => 'user',
'password' => 'pass',
'dbname' => 'dbname',
'dbprefix' => '',
'unix_socket' => '/var/lib/mysqld/mysqld.sock'
  )
);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top