PHP5.4.0から簡易的にWEBサーバを立てれる機能が追加されましたね。
この機能、とても使えます。
PHPをにわか程度にしか使っていないので、バリバリ書いている人の感想はわかりません。
僕は、APIを扱う時やajaxでクロスドメイン制約を考慮した時などに使ってきました。
MySQLはHomebrewでインストールしています。
問題
ある日、PHPとMySQLを使って簡易的なシステムを作ることになりビルトインサーバでやれば簡単だし、mysqlへはPDOを使えば楽勝だと。
その日は思っていました........
この機能ほんと便利で、ディレクトリをそのアプリのルートに移動して
php -S localhost:8888
とかしてやれば、localhost:8888にそのディレクトリがルートのwebサーバが立ち上がります。
PDOにも慣れてきて、コードを書き進める手が休むことを知りません。
「さて、見てみるか。」
No such file or directory
は?( ? _ ? )
DB接続に関しては、同じコードなので間違えてはないぞ。。
なぜだ、、、、
調べてみました。
「ビルトインサーバからデータベース接続はエラーが出ます。」
どうやら、超便利なビルドインサーバですが、DB接続は初期のままだとエラーが出るらしい。
では解決法。
解決
いくつか方法はあるようです。
- php.iniでパスを書き換える
- MAMPに変える
この2つを僕自身が検証したので、この2つを紹介したいとおもいます。
ではまず、「php.ini」を書き換える方法
php.iniを書き換える
まずmysqlソケットプロセスのパスを確認します。
$ mysql_config --socket
> /tmp/mysql.sock
僕の場合は、/tmp/mysql.sock
でした。
ではPHPはどこを目指しているか。
$ php -i | grep socket
> mysql.default_socket => /var/mysql/mysql.sock => /var/mysql/mysql.sock
mysqli.default_socket => /var/mysql/mysql.sock => /var/mysql/mysql.sock
pdo_mysql.default_socket => /var/mysql/mysql.sock => /var/mysql/mysql.sock
この3つも見てもらうと分かりますが、
PHPは/var/mysql/mysql.sock
MySQLは/tmp/mysql.sock
になっています。
では、php.iniに変更をかき加えよう。
php.iniを開き
mysql.default_socket
,mysqli.default_socket
,pdo_mysql.default_socket
の3つを、'/tmp/mysql.sock'
に合わせてみましょう。
ここまでしたら、
$ php -i | grep socket
先ほどと同じように確認すると同じになっているのが確認できると思う。
MAMPを導入する
正直、これが一番楽だし管理も簡単です。
MAMPというソフトをダウンロードしてきます。
インストールしたら開いて設定をしましょう。
この設定の上のタブからWEBサーバを選びます。
ApacheとNginxというWEBサーバが用意されていますが、apacheのままで大丈夫です。
ドキュメントルートという文字の横のフォルダのマークをクリックして、
php -S localhost:8888
を実行していたディレクトリを選択してください。
そのあとサーバ起動というボタンで、apacheとmysqlが立ち上がります。
mysqlのユーザとパスワードですが、デフォルトでは
user-> root
password-> root
になっています。
サーバ起動ボタンを押すと、webページが開くと思います。
そこからphpmyadminを開けば、視覚的にデータベースを操作できます。
windowsではxampと言われるものがあったりするので、参考程度にしてください!