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