はてなブログ

IT業界にひっそり生息しています。

Laravelのartisanでサーバを立ち上げた時にプライベートIPでアクセスできない問題と、その対処法

以前ハマったことを備忘を兼ねてメモです。

LaravelでPHPのビルトインサーバを立ち上げる

サーバサイドでLaravelを使っている場合、ローカルでWebサーバの設定をしなくても以下のコマンドでPHPのビルトインサーバを立ち上げてページを確認することができます。

$ php artisan serve

デフォルトだとlocalhost:8000でサーバが起動しますが、オプションを付けるとポートを変更することもできます。

以下のコマンドで起動すればポート8080を使用できます。

$ php artisan serve --port 8080

プライベートIPでのアクセスができない問題

基本はlocalhost:8000へのアクセスで一切問題ないのですが、自分のローカル環境の状態を他のデバイスから見たくなったりすることもあります。

例えば同じ現場での複数人の作業時や、スマホでの表示確認の場合などです。

そんな時はプライベートIP(例えば192.168.0.3:8000)へアクセスしたいのですが、デフォルトの設定で起動するとホスト名がlocalhostで固定されてしまうのでプライベートIPでアクセスすることができません。

プライベートIPでアクセスする方法

PHPビルトインウェブサーバーのドキュメントに以下の記述があります。

ウェブサーバーを、任意のインターフェイスからポート 8000 でアクセスできるようにするには、このようにします。

$ php -S 0.0.0.0:8000

これにならって、artisanコマンドのオプションでホスト名を以下のように0.0.0.0にしてあげると、プライベートIPでアクセスが可能な状態でサーバが起動します。

$ php artisan serve --host 0.0.0.0

この方法だと任意のインターフェイスからアクセス可能にしてくれるので、プライベートIPはもちろん、localhost:8000からでもアクセスすることができます。

これで無事解決できました。