質問

最近、Zend Frameworkの使用を開始しました。ローカルXAMPPサーバーで開発を開始しましたが、うまくいきましたが、1and1アカウントにアップロードすると、次のエラーが表示され続けます:

  

メッセージ:SQLSTATE [HY000] [2002]できません   を介してローカルMySQLサーバーに接続する   ソケット '/var/run/mysqld/mysqld.sock'   (2)

application.iniファイルのresources.db.params.unix_socket行をphpinfoで言及されている別の行に変更しようとしましたが、成功しませんでした。 ここ誰かが答えた

  

同じホスト上のMySQLサーバーです   Webアプリケーションとして?そうでない場合は、あなた   ソケット接続を使用できない、および   TCP経由で接続する必要があります。

これは私のWebホストに当てはまると思います。代わりにTCP経由で接続するようにZFを変更するにはどうすればよいですか?現在、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が読み取られていないようです。 index.phpのelseステートメントを「本番」に変更して、本番データベースの設定を使用しましたが、うまくいきました。かなりイライラします。環境変数が読み取られなかったのはなぜだろうか。ご協力ありがとうございます。

他のヒント

MySQLへの接続方法は、 mysql_connect()に渡すパラメーターによって異なります。ファイルパスを渡すと、 /var/run/mysqld/mysqld.sock 、ソケット接続を試行します。ホスト名を渡すと、TCP接続が試行されます。

mysqlサーバーのホスト名(またはIP)を見つけて、次のように接続する必要があります:

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

オッズはZFの場合、データベース設定を保存する構成ファイルで、または host 設定を使用してデータベースに接続するときに、これを指定できます。

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

編集:適切なホスト名/ポートをホストパラメーターとして mysql_connect()に渡し、このメッセージを取得している場合は、 サーバー設定の問題である可能性が高いです。

ini_set()

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

ソケットファイルの場所を把握する必要があります。多くの場合、「/ var / lib / mysql / mysql.sock」ですが、システムに依存すると思います。

Zend Frameworkにはdb params 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