View
4.945
Download
2
Category
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