PHP With Windows binary

Preview:

DESCRIPTION

 

Citation preview

PHP勉強会SIDE-B (第1回)

WindowsでのPHPとのつきあい方(前編)

id:msakamoto-sf

坂本 昌彦

アジェンダ

● 1.インストーラを用いずにzipファイルからインストールする方法

● 2.Windows用PHPバイナリの構成● 3.CUIで動かす時の最小構成

1.インストーラを用いずにzipファイルからインストールする方法

WindowsでのPHPのインストール

ところで

Windowsって使ってますよね?

MacOSXとか*nix使いは

寝ちゃうかも・・・(;^^)ヘ..

インストール

どうやってインストールしているか?

インストール方法

XAMP?

インストール方法

インストーラパッケージ?

インストール方法

本で/WEBで見たとおり?

インストールして・・・

インストールした後

なんとなく

放置してませんか?

なんとなく

放置すると・・・

半年おきとか。

いつのまにやらバージョンが上がってたり。

泣く泣く

入れ直し。(つд・)エーン

厭な所

・XAMP・インストーラ

↓レジストリとか弄られるのが

厭。

プロっぽく

zipパッケージで全てのファイル・ディレクトリ構成を掌

握し、管理する。

こだわり。

レジストリを弄る必要も無い!!

(゚∀゚)

PHP本体の

バージョンアップも、ファイルの入れ替えだけでほぼOK

工夫すれば・・・

PHP4とPHP5の共存も!

試したことは無いけど・・・

(多分マイナーバージョン間の共存もOK)

前提

WinXP SP2Apache 2.0.5x系列

PHP 5.2.6

主要な二種類のダウンロード

今回は上を使います。

ダウンロードしたら

解凍して、好きな場所にうつします。

例(in_vitroというのは気にしなくてOK)

php.iniは

php.ini-recommendedを

php.iniにコピーします。

Apache

httpd.confの編集

以下を追記。(パターン)

LoadModule php5_module "C:/in_vitro/apps/php5/php5apache2.dll"# ↑は実際は一行で。# (Load Module php5_module "C:/.../php5apache2.dll")

PHPIniDir "C:/in_vitro/apps/php5"

AddType application/x-httpd-php .php .htmlAddType application/x-httpd-php-source .phps

"PHPIniDir"

PHPIniDir: php.iniのあるフォルダを指定。

PHP4と違って

C:\WINDOWS とかにphp.iniを置かなくても

平気!

Apacheを再起動・・・の前に。

Apache.exe -tで確認。

(何かオプションがアレですが気にしないで!)

↑OK。Apache起動できる。

> cd "C:\Program Files\Apache Group\Apache2\bin"> apache -t -f conf\httpd_php5.confSyntax OK

ディレクトリ指定とかが間違ってた時

・・・何か出ます。

> cd "C:\Program Files\Apache Group\Apache2\bin"> apache -t -f conf\httpd_php5.confSyntax error on line 15 of C:/Program Files/Apache Group/Apache2/conf/httpd_php5.conf:Cannot load C:/in_vitro/apps/php5/php5apache2.dll into server: \x8ew\x92\xe8\x82\xb3\x82\xea\x82\xbd\x83\x82\x83W\x83\x85\x81[\x83\x8b\x82\xaa\x8c\xa9\x82\xc2\x82\xa9\x82\xe8\x82\xdc\x82\xb9\x82\xf1\x81B

Apacheを起動したら

適当な公開ディレクトリで"<?php phpinfo(); ?>"を叩いて動けばOK.

php.iniの設定内容は

大垣先生のWikiを見るとよい。http://wiki.ohgaki.net/

「PHP/tips/推奨php.ini設定」など。

PHPのバージョンが変わった時は・・・

1.PHPをDLする。2.httpd.confの書き換え

3.php.iniの移行(4.extensionのコピー)

Apacheを入れ直した時は・・・

1.httpd.confの追記

2.Windows用PHPバイナリの構成(直下のファイル群)

● php5ts.dll - PHP言語の実行コアライブラリ● php.ini-{dist|recommended} - php.iniの雛形● php({-cgi|-win}).exe - CLIやCGIでのPHP実行ファイル

● php5apache*.dll, php5{is|ns}api.dll - 各種Webサーバー用モジュール

● go-pear.bat - PEARライブラリインストールバッチ● 他のDLL - MySQLやSSLなどのネイティブライブラリ

ディレクトリなど

● dev/ - 静的ライブラリ(php5ts.lib)置き場● ext/ - PECLモジュール(dll)置き場● extras/ - MIB, SSL, PDF関係のファイル置き場● PEAR/ - PEARインストールパッケージ(*.phar)●

PHPの動作とファイルの関係(1)Apacheモジュールの場合

Apache.exe↓

php5apache*.dll↓

php5ts.dll

PHPの動作とファイルの関係(2)CGIの場合

Apache.exe/IIS↓

php-cgi.exe↓

php5ts.dll

PHPの動作とファイルの関係(3)CLIからの場合

(コマンドプロンプト)↓

php.exe↓

php5ts.dll

php-win.exeが謎だけど・・・

結局php5ts.dll

に行き着きます。

php.ini

重要

デフォルトでは何処にphp.iniがあると(php5ts.dllは)思っているか。

(PHPIniDirをコメントアウトしてApacheを起動)

php.iniの場所の教え方(1)Apacheモジュール

PHPIniDir ディレクティブ

PHPIniDir ディレクティブの効果

PHPIniDir "C:/in_vitro/apps/php5"

php.iniの場所の教え方(2)exe系から叩く時

"-c "オプション

php(-cgi).exe -c ...\php.ini

php.iniは重要

・・・ですが、セキュリティ関係の設定は大垣先生の資料を参

考にするとして。

プログラミングする上で

普通に重要な設定が二つあります。

二つ。

"include_path"

"extension_dir"

"include_path"

{require|include}(_once)する時に指定されたファイルを探

すディレクトリの一覧。

"include_path"の設定をミスると・・・

PEARのライブラリファイルが見つからなくなったりします。

アプリのrequire/includeで失敗したりします。

"extension_dir"

"extension"で読み込むDLLの入っているディレクトリ。

MySQL接続とか、mbstringとか・・・。

"extension_dir"の設定をミスると・・・

DBに接続できなくなったり、いろいろと出来なくなります。

これほど重要な設定なのに・・・

php.ini-recommendedのデフォルト設定は役立たず。

(´・ω・`)

"include_path"のデフォルト

;include_path = ".;c:\php\ includes"

コメントアウトされてるし。

"extension_dir"のデフォルト

extension_dir = "./"

イヤ、それ、違うし。

なので

この二項目はすぐに正しいディレクトリに書き換えて下さい。

include_pathについてはPEARを入れてから調整しても良いで

すが・・・

extension_dirについては直ぐに。

でないと、php_zipやmbstringなどが読み込めない

=PEARのインストールを始めとして

色々支障が出ます。

3.CUIで動かす時の最小構成

突然ですが、Windows用のPHPって"可愛い"と思うのです。

理由

・好きな場所における。・ファイルの組み合わせが

楽。・*nixと違ってディレクトリ構成の制約が少ない。

極端な話

php5ts.dllphp.exephp.ini

だけでCLIで実験できる!

CLIの構成例

● php5ts.dll● php.ini● php(-win).exe : php-winとの使い分けは後述。● ext/php_***.dll : お好みのDLL● boot.bat : プログラム実行用BATファイル●

● 他、PHPスクリプトファイル。

秘密1

%~dp0

%~dp0とは?

%0がバッチファイル名。(boot.bat)

~dでドライブ名展開。~pでファイル名を除くパス

名に展開。

秘密2

php(-win).exeの"-d"オプション。

"-d"オプション

php.iniの設定項目を上書き。

秘密3

php-win.exe+

"start"コマンド in boot.php

php-win.exe

コマンドプロンプトウインドウを表示せずにPHPスクリプ

トを実行可能。

"start"コマンド

kickしたプロセスの終了を待たずに、処理続行

=boot.bat自体は終了。

組み合わせれば・・・

タスクスケジューラからkickされる定時実行バッチもPHPスクリプトで書ける!

配布ファイルも柔軟に構成可能だから

PHP実行環境と一緒に配布することも可能。

(=配布先でわざわざPHPを"インストール"する必要

無し。)

まとめ

● インストーラやXAMPを使わず、zipから展開すれば、レジストリも弄らないし、PHP本体のバージョンアップに対する追従も楽。

● php5ts.dll, php.ini重要。● php.iniではextension_dirとinclude_pathに注

意。● "%~dp0", php-win.exe, "start"コマンドでPHPスクリプトを柔軟に配布・実行可能。

Windows用のPHP5バイナリって

実は結構使い勝手が良い言語環境だと思う。

Recommended