PHPをコマンドラインで実行して簡易サーバーを立ち上げる

PHPにはコマンドラインで簡易ウェブサーバーを立ち上げる機能がついています。PHP 5.4.0から追加された機能で、簡易制作環境として、とても役に立ちます。

何らかのPHPスクリプトを試そうと思ったとき、XAMPPを使っているのであれば、htdocsフォルダの中に作業フォルダを作り、XAMPPコントロールパネルを起動して、さらにApacheを起動する、という準備が必要です。
その上、URLが「http://localhost/作業フォルダ/」となり、1階層深いURLで作業をすることとなります。これをシンプルにしようとすると、Virtual Hostの設定も必要なので、さらに準備の手順が増えてしまいます。
プロジェクトを進めるうえでは必要かもしれませんが、規模が小さい場合や短いスクリプトを試したいだけの場合は、あまり準備に時間を割きたくありません。

少しでも準備時間を減らして、早くスクリプトを書きたい。もっと手軽にPHPの制作をしたい。そう考えたときの強い味方が、PHPで立ち上げられる簡易サーバー『ビルトインウェブサーバー』です。

コマンドラインを開く前に作業フォルダを用意する

ビルトインウェブサーバーはhtdocs以外のフォルダもドキュメントルートに設定できるので、ローカル上であればどこにフォルダがあっても問題ありません。今回はデスクトップに「test-server」という作業フォルダを作成し、以下内容のhtmlファイルを入れてテストします。


<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8">
    <title>ビルトインウェブサーバーのテスト</title>
  </head>
  <body>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>PHPのビルトインウェブサーバーの実行テストを行います。</p>
  </body>
</html>

desktop/test-server/index.html

後で使いますので、一旦置いておきます。

PHPをコマンドラインから実行する

ここからは、PHPがインストールされていることを想定して進めます。また、Windowsでの例を挙げて説明いたします。ご了承ください。Mac の場合、実は初めからインストールされているので、コマンドラインからPHPを実行すること自体は可能です。

Windowsの場合はインストール必須です。XAMPPにもPHPがついてくるので、Windowsをお使いで、PHPをインストールしていない場合は、次の記事がお役に立てるかもしれません。よければご覧ください。
WindowsでPHPを実行する!XAMPPのインストールについて

コマンドラインとは、『コマンド』と呼ばれる命令文を入力してコンピュータを操作するためのもので、Windowsなら『cmd.exe』、Macなら『ターミナル』というアプリケーションがOSに同梱されています。
正確に言うと『コマンドを入力している行』のことを指すそうですが、アプリケーションそのものを指すことも多いのです。

実際にコマンドラインからPHPを実行してみます。

PHPの実行可否を確認するには-vオプションで

コマンドラインで次のコマンドを入力すると、PHPが使えるかどうか確認できます。


  php -v;

冒頭の「php」はPHPを使う、という宣言のようなもので、「-v」は使用するPHPのバージョンを表示しなさい、という命令です。Windowsの場合、次のように表示されます。

PHPのバージョンが表示された例
phpが使えない場合のコマンドライン

※PHP 5.6.30と書かれている箇所がバージョン情報です。今回はビルトインウェブサーバーを使うことが目的なので、PHP 5.4.0以降でなければなりません。そうでない場合は、PHPのバージョンを新しいものに切り替えておきましょう。

「-v」のように処理を命令するものは『コマンドラインオプション』と呼ばれていて、他にいくつも用意されています。必要になった際にPHPのマニュアルをご覧いただければと思います。
http://php.net/manual/ja/features.commandline.options.php

もしも次のように表示されていたらコマンドラインからPHPを使えないので、環境変数を設定する必要があります。

コマンドラインからPHPを使えない例
phpが使えない場合のコマンドライン

注意
コマンドを使うためには、コマンドラインから実行するアプリケーションの場所を『環境変数』に設定する必要があります。この設定がされていないと、上記例のようなエラーが出てきます。

phpコマンドが使えない場合は環境変数を設定する。

先述の通り、Macは初めからPHPがインストールされているので、コマンドが使えない場面の方が少ないので省かせていただきます。
Windowsだと環境変数の設定は、ほぼ必須の作業になると思いますが、やや複雑なので、順を追って説明いたします。

  1. PHPの実行用アプリケーションが保存されているフォルダのパスをコピーする。

    注意
    ※php.exeが置かれているフォルダのことです。XAMPPをインストールしている場合は、『xampp』フォルダの中にある『php』フォルダに保存されていますので、それを使います。

     

  2. 『スタート』をクリックし、メニューから『コントロールパネル』を開く

     

  3. 『システムとセキュリティ』を開く

     

  4. 『システム』を開く

     

  5. 『システムの詳細設定』を開く

     

  6. タブ『詳細設定』を選択し、『環境変数』を開く

     

  7. 『システム環境変数』の一覧から、『Path』もしくは『PATH』を探しクリックし、『編集』ボタンをクリックする。

     

  8. 1.でコピーしたphpのフォルダのパスを変数値に追加する。

    注意
    パスの末尾には「;(半角セミコロン)」を必ず入力します。すでに何らかのパスが入っている時は末尾を確認し、半角セミコロンでなければ、入力してからphpフォルダのパスを追加してください。

     

実際にビルトインウェブサーバー(簡易サーバー)を実行する

ビルトインウェブサーバーは、「-S」オプションを使い、ホスト(ローカルIPアドレス)、ポートを明記することで起動できます。

例:ビルトインウェブサーバーの実行例


  php -S 127.0.0.1:8080

上記のコマンドをそれぞれ簡単に説明すると、次のような意味があります。

php -S ビルトインウェブサーバーの実行
127.0.0.1 自分自身を表すIPアドレス(ループバックアドレス)
:8080 ポート8080を使用する

実行後コマンドラインが次のような表示になったら成功です。

ブラウザのアドレスバーに「127.0.0.1:8080」と入力すると、アクセス可能です。

サーバーが起動し、ブラウザで表示される例

サーバーを終了させる際は、「Ctrlキー」と「Cキー」を同時に押します。終了後再度ブラウザで開こうとするとアクセスできなくなっているはずです。

サーバーが終了後、ブラウザで表示されなくなる例

 

Not foundになる場合は作業フォルダを指定する。

カレントディレクトリにindex.htmlが無い場合、PHPのNot foundページが表示されていると思います。その場合は「-t」オプションで作業フォルダを指定するか、コマンドラインのカレントディレクトリを作業フォルダにしておくことで対応します。

例:「-t」オプションで作業フォルダを指定する例


  php -S 127.0.0.1:8080 -t C:\Users\user1\desktop\test-server

 

例:作業フォルダをカレントディレクトリにする例


  cd C:\Users\user1\desktop\test-server
php -S 127.0.0.1:8080

2回に分けて実行します。1行目でカレントディレクトリを変更し、2行目でビルトインウェブサーバーを実行しています。

作業フォルダを示している箇所「C:\Users\user1\desktop\test-server」は使用しているPCごとに違いますので、適宜置き換えてください。

このように設定することで、同じURLにアクセスしても正しく表示されます。

 

html拡張子のファイル内でPHPを扱っている場合の表示方法

.html拡張子のファイル内にPHPスクリプトを記載し、.htaccessを使って.html拡張子をPHPとして動作させている場面は少なからずあると思います。しかし、ビルトインウェブサーバーで同じことはできません。.htaccessで処理を制御できないので、.html拡張子のファイルをPHPファイルのように扱うことが出来ないのです。こういう場合はhtdocs内に置いて、Apacheを経由するのが楽だと思います。

とはいえ、ビルトインウェブサーバーで同じように処理する方法が無いわけではありません。具体的には、対象ファイルをそのまま表示するのではなく、別で用意したphpファイルで対象ファイルを読み込ませて、PHPスクリプトを処理した結果を表示する方法です。

下記の手順をお試しください。

  1. 対象ファイルを読み込むためのphpファイルを作成する。
    下記内容を記載したPHPファイルを作成し、作業フォルダに保存します。名前は何でも問題ありませんが、ひとまず「router.php」にします。

    
    <?php
      $filepath = $_SERVER["SCRIPT_NAME"];
    
      if( !preg_match( "/\.html$/", $filepath ) ){
        return false;
      }
    
      chdir( dirname( substr( $filepath, 1 ) ) );
      require_once( $filepath );
      return true;
    ?>
    

    desktop/test-server/router.php

     

  2. コマンドラインでの操作に戻ります。作業フォルダをカレントディレクトリにする。

    cd C:\Users\user1\desktop\test-server

     

  3. ビルトインサーバー起動のコマンドの後に、router.phpを併記する。

    php -S 127.0.0.1:8080 router.php

     

上記の手順で、.htaccessが無くても、.html拡張子のファイル内でPHPスクリプトを使えるようになります。今回作成したrouter.phpは使いまわせるので、そのまま保存しておくのがおすすめです。

まとめ

XAMPPをインストールしていれば、すぐ使える上に、Virtual Hostの設定をしなくてもURLをシンプルにできるので、様々な場面で役に立ちます。

注意点は次の通りです。

  • phpコマンドを実行できない場合、環境変数を設定する。
  • ビルトインウェブサーバーはPHPのバージョン5.4.0からしか使えない

 

コマンドラインから使うPHPは取っ付きにくい印象がありますが、テスト用にサーバーを立ち上げる程度であれば覚えることも少ないので、手軽に始められると思います。

環境変数の設定などの手間はかかりますので、少しハードルが高く感じてしまうかもしれませんが、一度設定してしまえば楽に使えますので、試してみる価値はあると思います。PHPの制作準備が面倒に感じ始めたら、「ビルトインウェブサーバー」試してみてはいかがでしょうか。

すべての人にインターネット
関連サービス