Zend FrameworkでMySQLソケットを介して接続する
-
22-07-2019 - |
質問
最近、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('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'
)
);