Laravel4、PHP5.4のサーバーを使用する

タグ: Laravel4  

簡単な小ネタをひとつどうぞ。

PHP5.4以上をご利用でしたら、PHP自体をサーバーとして使用できます。Laravel4にはこれを簡単にコマンドから動作可能です。

以降のコマンド・表示はLinuxのbashを使用している場合です。

php artisan serve

これで完了です。以下のメッセージが表示され、サーバーとして動作している間は入力が受け付けられません。

Laravel development server started on localhost:8000...

ブラウザでlocalhost:8000にアクセスすれば、トップページが表示されます。もう、開発でWebサーバーがどうのこうのと、面倒なことをしなくてもすむわけです。

さて、上記のサーバーですが、停止したい場合はどうするのでしょうか。それは、皆さんの使用している設定にもよりますが、一般的にはCTRL+Cで終了させることが可能です。(Windowsだと異なっているかもしれませんね。CTRL+D? CTRL+Z??)

コマンドの最後にバックグランドで実行させるため&をつけてコマンドを叩くことができますが、サーバーとして正しく動作しないようです。(試していませんが、もしかしたら--quietを付けて実行するか、出力をリダイレクトする必要があるのかも知れません。)

一度起動し、停止、その後にもう一度実行しようとして以下のエラーが表示された場合、内部的には完全に前回のコマンドが終了していません。

Laravel development server started on localhost:8000...
[Sat Apr  6 07:49:42 2013] Failed to listen on localhost:8000 (reason: Address already in use)

実行しているプロセスをまず確認してください。

ps -F

これで自分が実行しているプロセスの一覧が表示されます。

UID        PID  PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
hiro      5683  5679  0  2172  4052   1 07:29 pts/0    00:00:00 /bin/bash
hiro      6476  5683  0  9379  6852   1 08:01 pts/0    00:00:00 php artisan
hiro      6486  5683  0  1540  1188   0 08:04 pts/0    00:00:00 ps -F

今回の場合、3つのうち2番目のプロセスです。一番右のCMD欄に、実行コマンドが表示されています。そのプロセスのPIDを確認してください。上記の場合、6476です。

次に、このプロセスを強制的に停止させます。

kill -9 6476

kill -9で強制終了です。最後にプロセスのPIDを指定してください。

なお、serveコマンドは、ホスト名もポート番号も変更できます。コマンドのオプションは以下のとおりです。

使用法:
 serve [--host[="..."]] [--port[="..."]]

オプション:
 --host                ホスト名(デフォルトは"localhost")
 --port                ポート番号(デフォルトは8000)
 --help (-h)           ヘルプの表示
 --quiet (-q)          メッセージを表示しない
 --verbose (-v)        メッセージを詳しくする
 --version (-V)        アプリケーションのバージョン表示
 --ansi                ANSI表示にする
 --no-ansi             ANSI表示を使用しない
 --no-interaction (-n) インタラクティブに質問をしない
 --env                 環境の指定

尚、もちろんArtisanを使用しなくても、組み込みWebサーバーは実行できます。その場合、PHPに指定できるオプションは全部使用できます。(ただし、私が試したMint linux14のデフォルトのPHPパッケージでは、Webサーバー起動時は-cによるphp.iniの指定は動作しませんでした。)

PHP -S localhost:8000 server.php