PHPUnitを実行してWordPressプラグインを単体テストしようとしていますが、タイトルのエラーが何度も表示されます。
WP-CLIを使用して単体テストをセットアップしましたが、WP-CLIを実行しようとすると、同様のエラーがスローされます。
MAMPを使用してデータベースを実行しています。
私はWP-CLIとPHPUnitをpharとしてセットアップしました。これらは〜/ .bash-profileでエイリアス化され、OS Xによって提供されるデフォルトの「php」で実行されました。これを変更し、WP-CLIとPHPUnitを最新のPHP MAMPによって提供されるバージョンはWP-CLIを修正しました(実行中であり、データベースに正常に接続していました)が、PHPUnitは依然として同じエラーをスローしていました。
Wp-config.phpファイルを編集して、ホストを「:/path/to/mamp/mysql.socket」、「localhost:/path/to/mamp/mysql.socket」、「127.0.0.1」に設定してみました"、どれも助けにはなりませんでした。
私は完全に行き詰まっているので、次に何を試したらいいのかわかりません。
このエラーが発生しました-wp-config.php
が指定しているスキーマが存在することを確認しましたか?
私の場合、あえて作成するのを忘れていたので、修正はCREATE DATABASE wordpress
と同じくらい簡単でした。
wp-config.php
データベースホストが間違っている場合にもこのエラーが発生しました(localhost
と127.0.0.1
を交換してみてください)。
まず、MySqlが実際に実行されていることを確認します。プロセスが開始されていない場合、ソケットファイルは作成されません。
_netstat -tulpn | grep mysql
_
または
_ps -e | grep mysql
_
MySqlが実行中の場合、wp-config.phpでデータベースホストをlocalhost
から_127.0.0.1
_に変更すると機能しますが、これは回避策にすぎません。
localhost
を指定すると、mysqli_real_connect()
関数は、見つからないUnixソケットを介してデータベースに接続しようとします(そのため、「no such file」エラーが発生します)。_127.0.0.1
_、デフォルトのTCPポート(通常3306))を使用してデータベースに接続しようとします。
PHPがMySqlソケットの場所を知らないという問題は修正されません。_php.ini
_で次のオプションを設定する必要があります。ソケットの場所は、お使いのOSでも、通常は_locate mysql.sock
_を実行して見つけることができます。CentOS6.8で動作する設定は次のとおりです。
php.ini
_pdo_mysql.default_socket = /var/lib/mysql/mysql.sock
mysqli.default_socket = /var/lib/mysql/mysql.sock
_
他のシステムでは一般的に_/tmp/mysqld.sock
_を使用します。 MySql構成ファイル_my.cfg
_を確認することで、構成された場所を確認できます。
正しいソケットの場所を指すようにPHPを構成したら、Apache/nginxを再起動して、新しい設定を有効にします。
これで、意図したとおりにlocalhost
を使用できます。
PhpMyAdminに移動し、データベースをクリックして、サービスが実行されている場所のIPをコピーし、wp-config.phpファイルを置き換えます。
/ ** MySQLホスト名*/define( 'DB_Host'、 'localhost');
/ ** MySQLホスト名*/define( 'DB_Host'、 'ip_where_is_running_mysqlserver');
それは私を混乱させました、しかし私は結局解決しました。
私のMySQLポートは3308なので、「127.0.0.1」を「localhost:3308」に変更します
$cfg['Servers'][$i]['Host'].
できます!
また、設定
$cfg['Servers'][$i]['controluser'] = '';
$cfg['Servers'][$i]['controlpass'] = '';
そして...
$cfg['Servers'][$i]['auth_type'] = 'cookie';
しかし、最も重要なことはポートの変更です。