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

  • 2017年9月6日
  • web

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でPHPを実行する! XAMPPのインストールについて

Webサイトの改善の幅を広げるPHPをWindowsで手早く使えるようにする『XAMPP』のインストール方法をお伝えします!

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

正確に言うと『コマンドを入力している行』のことを指すそうですが、アプリケーションそのものを指すことも多いのです。

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

PHPの実行可否を確認する方法

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


php -v;
      

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

Windowsの場合、次のように表示されます。

【PHPのバージョンが表示された例】

phpが使えない場合のコマンドライン

PHP 5.6.30と書かれている箇所がバージョン情報です。

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

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

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

【コマンドラインからPHPを使えない例】

phpが使えない場合のコマンドライン

※ 注意 ※

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

phpコマンドが使えない場合

先述の通り、Macは初めからPHPがインストールされているので、コマンドが使えない場面の方が少ないので省かせていただきます。

Windowsだと環境変数の設定は、ほぼ必須の作業になると思いますが、やや複雑なので、順を追って説明いたします。

Step1フォルダのパスをコピー

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

フォルダパス

※ 注意 ※

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

Step2『コントロールパネル』を開く

『スタート』をクリックし、メニューから『コントロールパネル』を開きます。

コントロールパネル

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

システムとセキュリティ

Step4『システム』を開く

システム

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

システムの詳細設定

Step6『環境変数』を開く

タブ『詳細設定』を選択し、『環境変数』を開きます。

システムの詳細設定

Step7『Path』をクリックし、『編集』ボタンをクリックする。

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

システム環境変数

Step8Step1でコピーしたphpのフォルダのパスを変数値に追加

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スクリプトを処理した結果を表示する方法です。

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

Step1対象ファイルを読み込むための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

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

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


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

Step3ビルトインサーバー起動のコマンドの後に、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の制作準備が面倒に感じ始めたら、「ビルトインウェブサーバー」試してみてはいかがでしょうか。

GMO順位チェッカー GMO順位チェッカー