SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

php5.4のビルトインウェブサーバーの使用例(WordPress編)

問題

php5.4のビルトインウェブサーバーを使って、WordPressを稼動させよ。

OSはWidnowsとする。

解答例

以下手順。

1、材料を用意する

php5.4 → 現時点では Windows版バイナリのQA版などに上がっている。

WordPress → 公式サイトからどうぞ

MySQLサーバー → インストール済みとする(またはインストールする)。

2、WordPressのソースを解凍する

WordPressは C:\var\www\wordpress に解凍していることにする(どこに解凍してもよい)。

3、ビルトイン ウェブサーバーを起動する

php5.4をZIP形式で落としてきたら、C:\var\php5.4 に解凍していることにする(どこに解凍してもよい)。

MySQLに接続できるように php.ini を変更。

extension_dir = "C:\var\php5.4\ext"
extension=php_mysql.dll
※先頭のセミコロン(;)を削除して有効化する。

以下のように起動させる。

・サーバーは、IP 127.0.0.1、ポート80 で稼動させることにする。
・ドキュメントルートが2の C:\var\www\wordpress になるようにする。

コマンドプロンプトで、以下のように実行する。

(ドキュメントルートまで移動して)
C:\>cd C:\var\www\wordpress

IPとポートを指定して起動
C:\var\www\wordpress>C:\var\php5.4\php.exe -S 127.0.0.1:80
PHP 5.4.0RC3-dev Development Server started at Sat Dec 10 18:37:38 2011
Listening on 127.0.0.1:80
Document root is C:\var\www\wp\wp
Press Ctrl-C to quit.

php.exe のショートカットを作って、以下のように設定して、ダブルクリックして起動させてもよい。


(上図の「リンク先」で、実行ファイル php.exe のオプションに -S 127.0.0.1:80 -t C:\var\www\wordpress を追加し、作業フォルダをドキュメントルートのC:\var\www\wordpressにしておく)

カレントディレクトリや作業フォルダが適切でないと、WordPressが最初に相対パスで読み込む require('./wp-blog-header.php'); などがうまくいかない。

4、WordPressをインストールする

データベースを作っておいて、では、ブラウザで http://127.0.0.1/ にアクセス。

php単独で、通常通り動いた!

インストール作業は問題なく進み…

見事に問題なく動きました。

さらに

Apacheのmod_rewriteが有効なときと同じように、数字ベースのURLが使えるようにするには?

このままではrewriteなどが使えないので、URLはhttp://127.0.0.1/?p=4 や、設定しても http://127.0.0.1/index.php/archives/4 のような形式になります。

そこで、rewriteでやるように、ファイルがあったらそちらにアクセスしてもらい、ファイルがなかったらindex.phpで処理するルータースクリプトを用意してみます。

<?php
/**
 * router.php
 */
if (file_exists(dirname(__FILE__) . parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH))) {
    return false;
} else {
    require './index.php';
}

いずれ本番稼動するときのためにindex.phpはそのままにしたいので、router.php のような名前の新しいファイルを作ります。

このrouter.phpを、ビルトインウェブサーバーを起動するときの引数に加えます。

(ドキュメントルートまで移動して)
C:\>cd C:\var\www\wordpress

IPとポートとルータースクリプトを指定して起動
C:\var\www\wordpress>C:\var\php5.4\php.exe -S 127.0.0.1:80 router.php

最後に、WordPressの管理画面で、設定→パーマリンク設定にて「/archives/%post_id%」などにすると、http://127.0.0.1/archives/4 のようなURLでアクセスできるようになります。

以上、Apache等なしで、php5.4(とMySQL)だけでWordPressが動きました。開発ならこれでできそうです。

さいごに

Windowsにこだわらないで、Linuxでも使えば楽なんじゃないかといわれれば、きっとそんな気がします。

phpにビルトインウェブサーバーが組み込まれたのは、Windowsで手軽に開発したいという需要でもあったのでしょうか。

phpのビルトインウェブサーバーは「このウェブサーバーは開発用としてのみ設計されたものであり、 実運用に使ってはいけません。」との注意書きがあることも書いておきます。

関連するメモ

コメント