ドイツ語の「Zend Framework in Action」という本でZend Frameworkを学び始めました。
すぐそこに興味を持ち始めたところ、私のPHP Unit Testはこのエラーを投げます: "Zend_Db_Adapter_Exception:SQLSTATE [HY000] [2002] No such file or directory"
Googleの検索でヒントが見つかりません。私はそれが本にあるようにすべてをしました。誰が障害を検索するかについてのヒントを教えてもらえますか?
これは初心者によくある間違いですか?
PHPからMySQLへの接続に問題があります...
PHPソケットファイルを見つけようとして、見つけられないかもしれませんか?
(私はこの問題を何度か経験しましたが、私が受け取ったエラーが正確にこれであったかどうかはわかりませんが)
Linuxベースのシステムを実行している場合は、my.cnf
ファイルは、MySQLの設定に使用されます。Ubuntuでは、/etc/mysql/
。
このファイルには、次のようなものがあります。
socket = /var/run/mysqld/mysqld.sock
PHPは同じファイルを使用する必要があります。ディストリビューションによっては、デフォルトのファイルがMySQLが使用するファイルと同じでない場合があります。
この場合、これらの行をphp.ini
ファイルが役立つ場合があります。
mysql.default_socket = /var/run/mysqld/mysqld.sock
mysqli.default_socket = /var/run/mysqld/mysqld.sock
pdo_mysql.default_socket = /var/run/mysqld/mysqld.sock
(Apacheを再起動して、php.ini
が考慮されます)
最後の1つはZend Frameworkで使用されるPDOに十分なはずですが、前の2つは害を及ぼさず、他のアプリケーションに役立ちます。
これで解決しない場合:別のスクリプトでPDOを使用してデータベースに接続できますか。これはZend Frameworkから完全に独立していますか?
つまり、このような作業を行います (quoting) :
$dsn = 'mysql:dbname=testdb;Host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';
try {
$dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
いいえの場合、問題は間違いなくZFではなく、PHPの構成/インストールの問題です。
はいの場合...まあ、それはあなたがZFに問題があることを意味し、セットアップに関する詳細情報を提供する必要があります(たとえばDSNのように?)
まず、nix_socketの場所を取得。
$ mysql -u root -p
Mysqlパスワードを入力し、コマンドラインからmysqlサーバーにログインします。
mysql> show variables like '%sock%';
+---------------+---------------------------------------+
| Variable_name | Value |
+---------------+---------------------------------------+
| socket | /opt/local/var/run/mysql5/mysqld.sock |
+---------------+---------------------------------------+
Unix_soketは異なる場合があります。
次に、php.iniを変更し、php.ini
ファイル
<? phpinfo();
異なるバージョンの多くのphpをインストールする可能性がありますので、php.iniファイルの場所を想定せずに、「phpinfo」から取得してください。
Php.iniを変更します。
mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
mysqli.default_socket = /opt/local/var/run/mysql5/mysqld.sock
pdo_mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
次に、Apacheまたはphp-fpmを再起動します。
Db設定ファイルでHost = 127.0.0.1を設定してみてください。うまくいきました! :)
それが役に立てば幸い!
osxでmagentoインデクサーを実行すると、この問題が発生しました。はい、pdo経由でmysqlに接続するときのphp問題に関連しています
mac osx xamppでは、これを修正するためにディレクトリ/ var/mysqlへのシンボリックリンクを作成しました。
cd /var/mysql && Sudo ln -s /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
ディレクトリ/ var/mysqlが存在しない場合は、次を使用して作成する必要があります。
Sudo mkdir /var/mysql
私もこの問題に悩まされており、単にIPアドレスの後にポート番号を追加するによって私を救った。
$dsn = 'mysql:dbname=sms_messenger;Host=127.0.0.1:8889'; $user = 'root'; $password = 'root';
これはMac OSで機能します
Mysqlのポート番号がわからない場合は、
MAMPホームページでポート番号を簡単に見つけることができます
OR
MAMPサーバーの実行中に次のコマンドを入力して、ターミナルをmysql
に切り替えます
OMBP:mamp Omal$ /Applications/MAMP/Library/bin/mysql --Host=localhost -uroot -proot
次に入力
mysql> SHOW GLOBAL VARIABLES LIKE 'PORT';
このエラーは、mysqlが間違ったソケットファイルを介して接続しようとしているためです
mAMPサーバーでこのコマンドを試してください
cd /var/mysql && Sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock
または
cd /tmp && Sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock
xAMPPサーバー用のこのコマンド
cd /var/mysql && Sudo ln -s /Applications/XAMPP/tmp/mysql/mysql.sock
または
cd /tmp && Sudo ln -s /Applications/XAMPP/tmp/mysql/mysql.sock
Mysqlサービスが機能していないか、停止しているようです。以下のコマンドを使用して起動できます(Ubuntuの場合):
service mysql start
うまくいくはずです! Ubuntu以外のオペレーティングシステムを使用している場合は、適切な方法を使用してmysqlを起動します