PHP実装環境作り


小さいWEBアプリを作って国内レンタルサーバーで運用するならPHPかなーと思います。
残念ながらRuby on Railsは国内レンタルサーバーではオーバースペックで遅いです。
ということで、WEBとDAOをCakePHPに、その他ユーティリティクラスをZend Frameworkに担当してもらう感じの作成手順です。
JavaでいえばStrutsHibernate部分をCakePHPに、Jakarta Commons、Spring Frameworkの部分をZend Frameworkに担当してもらう感じです。

PHP

Apacheダウンロード・インストール

Download - The Apache HTTP Server Project

  1. 上記からダウンロード・インストール
PHPダウンロード・インストール

PHP: Downloads

  1. 上記からzipをダウンロード
  2. php.exeのディレクトリに環境変数パス(Path)を通す
  3. php.ini-distをphp.iniにリネームして以下のApacheルートディレクトリにコピー
    • C:/Program Files/Apache Software Foundation/Apache2.2

php.ini-recommendedは実運用のためにセキュリティ面などがより強化された設定内容

Apache設定(httpd.conf)

ApachePHPモジュールを適用

  • LoadModuleの項に次の行を追加(2.2.9の場合 110行目)
LoadModule php5_module C:/TOOL/php-5.2.6-Win32/php5apache2_2.dll

phpのファイル形式を定義

  • AddTypeの項の最後に次の行を追加(2.2.9の場合 406行目)
AddType application/x-httpd-php .php
PHP設定(php.ini)

doc_root = を以下のように変更(5.2.6の場合 479行目)

doc_root = "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs"

extension_dir = "./"を以下のように変更(5.2.6の場合 486行目)

extension_dir = "C:/TOOL/php-5.2.6-Win32/ext"

php_mbstring.dllを使用できるようにコメントアウト「;」を外す(5.2.6の場合 619行目)

extension=php_mbstring.dll
動作確認

PHPファイルをinfo.phpという名前で作成し以下に配備

  • C:/Program Files/Apache Software Foundation/Apache2.2/htdocs
<?php
  phpinfo();
?>
  • 以下にアクセス

http://localhost/info.php
以下のように出ればOK

Eclipse3.3プラグインPDT

ZendDebugger
  1. ダウンロード
  2. PHPインストールディレクトリに配備
    • C:/TOOL/php-5.2.6-Win32/
  3. php.iniに以下の設定を追加(末尾とか)
[Zend]
zend_extension_ts="C:/TOOL/php-5.2.6-Win32/ZendDebugger.dll"
zend_debugger.allow_hosts=127.0.0.1
zend_debugger.expose_remotely=always

以下のように出ればOK

以下のように出たらNG

Eclipseのフィーチャー更新でPDTインストール

http://download.eclipse.org/tools/pdt/updates/

2009/02/03追記:2008/12/29に新しいPDT出ました。Eclipse3.4ならhttp://downloads.zend.com/pdtでインストールするだけで、ZendDebuggerも入るし、下のEclipse設定も特にいらないみたい。

Eclipse設定

「ウィンドウ」→「設定」→「PHP」→「PHPプロジェクト」でPHP をインストールしたフォルダを指定

  • 名前・・・php-5.2.6-Win32
  • 実行可能ファイル・パス・・・C:\TOOL\php-5.2.6-Win32\
  • PHP ini ファイル・・・C:\Program Files\Apache Software Foundation\Apache2.2\php.ini
  • PHP デバッガー・・・Zend Debugger
PHPプロジェクト作成

「ファイル」→「新規」→「PHP」→「PHPプロジェクト」でPHPプロジェクト作成
※上記プロジェクトをC:/PROJ/SAMPLE_PHP_5_2_6_APP/に作成した場合、httpd.confに以下を記述

  • (タグ内 2.2.9の場合 328行目)
Alias /SAMPLE_PHP_5_2_6_APP/ "C:/PROJ/SAMPLE_PHP_5_2_6_APP/"
  • (適当な箇所に追加)
<Directory "C:/PROJ/SAMPLE_PHP_5_2_6_APP/">
  Allow from all
</Directory>
PHPファイル作成

PHPエクスプローラーで上記プロジェクトを右クリック→「新規」→「PHPファイル」→「ファイル名」にindex.php→「次へ」→「New PHP file - HTML frameset」選択→「終了」
作成されたファイルを下記のように変更

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
  <body>
  <p>TEST Page</p>
  <?php
    echo ' 
    Hello World ! 
    ';  
  ?>
    </body>
</html>
ブレークポイント設定
  • echoの左をダブルクリック
デバッグ実行

Apacheが起動されている状態で

  • 「Run」→「デバッグ」→「PHP Web ページ」
  • 「Launch URL」が表示されたらデバッグ対象箇所を通過するURLを設定し「OK」
ブラウザでも確認

http://localhost/SAMPLE_PHP_5_2_6_APP/index.php
※設定確認
「ウィンドウ」→「設定」→「PHP」→「PHP サーバー」→「Default PHP Web Server」→「編集」→「Path Mapping」が以下のように設定されていること。

  • Path On Server:C:\PROJ\SAMPLE_PHP_5_2_6_APP
  • Path On Workspace:/SAMPLE_PHP_5_2_6_APP

SQLite2

※現在のCakePHP1.1.19.6305は、まだSQLite3に対応してないのでSQLite2を使う。ここでSQLite3を使うぐらいならMySQLを使ったほうがよい。

SQLiteダウンロード・インストール

http://www.sqlite.org/sqlite-2_8_17.zip

SQLite起動・接続(2.8.17)
> cd C:\TOOL\sqlite-2_8_17
> sqlite
SQLite終了
> .exit
データベース作成
> cd C:\TOOL\sqlite-2_8_17
> sqlite SAMPLE
テーブル作成
sqlite> CREATE TABLE SAMPLES (
          id INTEGER PRIMARY KEY,
          title VARCHAR(50),
          body TEXT,
          created DATETIME DEFAULT NULL,
          modified DATETIME DEFAULT NULL);


※必要があれば以下の手順でODBC設定

ODBCドライバダウンロード・インストール

http://www.ch-werner.de/sqliteodbc/

データソース設定

「コントロールパネル」→「管理ツール」→「データソース(ODBC)」→「システムDNS」→「追加」→「SQLite ODBC Driver」

Data Source Name : SAMPLE_SQLite
Database Name : C:\TOOL\sqlite-2_8_17\SAMPLE

CakePHP

インストール

解凍した中身をWEBアプリルートディレクトリに配備
C:\PROJ\SAMPLE_PHP_5_2_6_APP
├─[app]
├─[cake]
├─[docs]
├─[vendors]
├─.htaccess
└─index.php

Apache設定(httpd.conf)

ApacheにURLリライトモジュールを適用

-以下の行のコメントアウトを外す(2.2.9の場合 115行目)
LoadModule rewrite_module modules/mod_rewrite.so

ドキュメントルートでindex.phpも探すように設定

  • 以下の項目にindex.php追加(2.2.9の場合 238行目)
<IfModule dir_module>
  DirectoryIndex index.html index.php
</IfModule>

アプリディレクトリに.htaccessが適用されるように設定

<Directory "C:/PROJ/SAMPLE_PHP_5_2_6_APP/">
  AllowOverride All
  Allow from all
</Directory>
ディレクトリアクセス制御設定

C:/PROJ/SAMPLE_PHP_5_2_6_APP/.htaccessタグ内にに以下を追記

RewriteBase /SAMPLE_PHP_5_2_6_APP

C:/PROJ/SAMPLE_PHP_5_2_6_APP/app/.htaccessタグ内にに以下を追記

RewriteBase /SAMPLE_PHP_5_2_6_APP/app

C:/PROJ/SAMPLE_PHP_5_2_6_APP/app/webroot/.htaccessタグ内にに以下を追記

RewriteBase /SAMPLE_PHP_5_2_6_APP/app/webroot

※この時点でhttp://localhost/SAMPLE_PHP_5_2_6_APP/で動作確認ができます。

データベース設定

php.ini修正

extension=php_pdo.dll(5.2.6の場合 630行目)
extension=php_pdo_sqlite.dll(5.2.6の場合 638行目)
extension=php_sqlite.dll(5.2.6の場合 645行目)
データベース接続情報設定

C:/PROJ/SAMPLE_PHP_5_2_6_APP/app/config/database.php.defaultをdatabase.phpにリネーム
database.phpを以下のように修正

<?php
class DATABASE_CONFIG
{
  var $default = array('driver' => 'sqlite',
                       'connect' => 'sqlite_open',
                       'database' => '../../db/SAMPLE');
}
?>
動作確認

http://localhost/SAMPLE_PHP_5_2_6_APP/
以下のように出ればOK

※ここから先は以下のページを見ながらサンプルアプリケーションでも作ってみる
Cake ブログチュートリアル


Zend Framework

php.ini修正

include_path = を以下のように変更(5.2.6の場合 473行目)

include_path = ".;C:\TOOL\ZendFramework-1.6.1\library"
動作確認

PHPファイルをzendinfo.phpという名前で作成し以下に配備

  • C:/Program Files/Apache Software Foundation/Apache2.2/htdocs
<?php
  require_once 'Zend/Version.php';
  echo 'Zend Framework : version = ' . Zend_Version::VERSION;
?>
  • 以下にアクセス

http://localhost/zendinfo.php
以下のように出ればOK

Zendコーディング規約

http://framework.zend.com/manual/ja/coding-standard.html



あとは作って壊してデバッグしてがんばる。
以下のようなCakePHPCSSテンプレートとか利用して、ささっと作れるのがありがたいですね。
10 Free Business Templates for CakePHP: CakePHP のおいしい食べ方
実装、運用コストの軽さを重視するならPHP最強な気がしました。
でも、今回の実装環境作り手順は結構長かったね。