XAMPP使ってMySQLとPHP繋ごうとしたらエラー出た

PHP学習RTAしてるんですが、その中でMySQLを使う際にエラーが出たのでその解決策(とりあえず何とかした方法ともいう)をメモる。

環境は

  • XAMPP 7.1.27
  • PHP 7.1.16
  • myssql 8.0.15

で合ってるはず。最初はXAMPPの古いバージョン(xampp-osx-7.3.2-2-vm)を使っていたようだ。これをインストールした理由としてはとりあえず、公式サイトでmac用にと書いてある奴を何も考えずダウンロードしたためである。いや、まさかこれが6時間にも及ぶ戦いの原因となるとなんて思ってもみなかった。

とりあえず、起きた現象とするとphpよりPDOを使用してMySQLを使用しようとするとERROR 2002 No such file or directoryが発生した。

最初はmysql.sockのパスがおかしいのかと思いそっちの設定をググりながらやってみた。一応書くとmysqlコマンドの中で(?)socketファイルのパスを探すコマンドを使用して、そこで出たパスをphp.iniに書き込むという奴だ。多分これはググったらすぐに出て来ると思う。

だが、これでは解決しなかった。

他の方法を探しているとnew PDO(. . .)をする際に設定する値の一つにhostというのがある。これを本ではhost=localhostとしていたが、これだとポートの関係とかうんたらで接続できないという記事があった。そのためhost=127.0.0.1にするとNo such file or directoryは消えた。

だが、これだけでは終わらなかった。

動作を確認すると次はConnection Refusedというエラーが出た。これがどこから出ているのかが分からず、new PDO(. . .)をする際のパスワードやテーブル名が間違ってないかとかを入念に確認していたが上手く行かなかった。

しかし、どうもMySQL側のエラーだというのが分かったのでMySQLを入れ直す事にした。その時にふと、もしかするとXAMPP側で何かしらの依存関係とかあるってそれを今のMySQLの入れ方では壊してるのかなと思いXAMPPを入れ直す事にした。

その時に、先ほどはとりあえずmac用のをとしていたのをやめてダウンロードページ(Download XAMPP)より最新のを用意した。

この状態でbrewにてインストールしたmysqlコマンドを使ったのだがデータベースへの接続が行えず使えなかった。そのため、XAMPPに備えられているmysqlを使用する事にするとコマンドが正常に使えた。

参照(データベース環境構築(Mac版) MySQLの設定 | ITエンジニア"が作るメディア Tech Fun Magazine)

もう一度データベースを構築し直したところエラーもでず正常に動いた。

POSTしたはずなのになぜか書き込みがされないという問題も合ったが、それは単に書き込み側のphpファイルではhost=localhostにしたままだったためであった。

 

正直この何が原因だったのか分からないまま使い続けるのは低レイヤーの民としてすごくもどかしいが、とりあえずPHPを勉強する方が優先順位が高いため今回はこれでクローズとしよう。。。