php with windows binary
DESCRIPTION
TRANSCRIPT
![Page 1: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/1.jpg)
PHP勉強会SIDE-B (第1回)
WindowsでのPHPとのつきあい方(前編)
id:msakamoto-sf
坂本 昌彦
![Page 2: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/2.jpg)
アジェンダ
● 1.インストーラを用いずにzipファイルからインストールする方法
● 2.Windows用PHPバイナリの構成● 3.CUIで動かす時の最小構成
![Page 3: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/3.jpg)
1.インストーラを用いずにzipファイルからインストールする方法
WindowsでのPHPのインストール
![Page 4: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/4.jpg)
ところで
Windowsって使ってますよね?
![Page 5: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/5.jpg)
MacOSXとか*nix使いは
寝ちゃうかも・・・(;^^)ヘ..
![Page 6: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/6.jpg)
インストール
どうやってインストールしているか?
![Page 7: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/7.jpg)
インストール方法
XAMP?
![Page 8: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/8.jpg)
インストール方法
インストーラパッケージ?
![Page 9: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/9.jpg)
インストール方法
本で/WEBで見たとおり?
![Page 10: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/10.jpg)
インストールして・・・
インストールした後
![Page 11: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/11.jpg)
なんとなく
放置してませんか?
![Page 12: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/12.jpg)
なんとなく
放置すると・・・
![Page 13: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/13.jpg)
半年おきとか。
いつのまにやらバージョンが上がってたり。
![Page 14: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/14.jpg)
泣く泣く
入れ直し。(つд・)エーン
![Page 15: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/15.jpg)
厭な所
・XAMP・インストーラ
↓レジストリとか弄られるのが
厭。
![Page 16: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/16.jpg)
プロっぽく
zipパッケージで全てのファイル・ディレクトリ構成を掌
握し、管理する。
![Page 17: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/17.jpg)
こだわり。
レジストリを弄る必要も無い!!
(゚∀゚)
![Page 18: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/18.jpg)
PHP本体の
バージョンアップも、ファイルの入れ替えだけでほぼOK
![Page 19: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/19.jpg)
工夫すれば・・・
PHP4とPHP5の共存も!
![Page 20: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/20.jpg)
試したことは無いけど・・・
(多分マイナーバージョン間の共存もOK)
![Page 21: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/21.jpg)
前提
WinXP SP2Apache 2.0.5x系列
PHP 5.2.6
![Page 22: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/22.jpg)
主要な二種類のダウンロード
![Page 23: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/23.jpg)
今回は上を使います。
![Page 24: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/24.jpg)
ダウンロードしたら
解凍して、好きな場所にうつします。
![Page 25: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/25.jpg)
例(in_vitroというのは気にしなくてOK)
~
![Page 26: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/26.jpg)
php.iniは
php.ini-recommendedを
php.iniにコピーします。
![Page 27: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/27.jpg)
Apache
httpd.confの編集
![Page 28: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/28.jpg)
以下を追記。(パターン)
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
![Page 29: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/29.jpg)
"PHPIniDir"
PHPIniDir: php.iniのあるフォルダを指定。
![Page 30: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/30.jpg)
PHP4と違って
C:\WINDOWS とかにphp.iniを置かなくても
平気!
![Page 31: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/31.jpg)
Apacheを再起動・・・の前に。
Apache.exe -tで確認。
![Page 32: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/32.jpg)
(何かオプションがアレですが気にしないで!)
↑OK。Apache起動できる。
> cd "C:\Program Files\Apache Group\Apache2\bin"> apache -t -f conf\httpd_php5.confSyntax OK
![Page 33: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/33.jpg)
ディレクトリ指定とかが間違ってた時
・・・何か出ます。
> 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
![Page 34: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/34.jpg)
Apacheを起動したら
適当な公開ディレクトリで"<?php phpinfo(); ?>"を叩いて動けばOK.
![Page 35: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/35.jpg)
php.iniの設定内容は
大垣先生のWikiを見るとよい。http://wiki.ohgaki.net/
「PHP/tips/推奨php.ini設定」など。
![Page 36: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/36.jpg)
PHPのバージョンが変わった時は・・・
1.PHPをDLする。2.httpd.confの書き換え
3.php.iniの移行(4.extensionのコピー)
![Page 37: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/37.jpg)
Apacheを入れ直した時は・・・
1.httpd.confの追記
![Page 38: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/38.jpg)
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などのネイティブライブラリ
![Page 39: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/39.jpg)
ディレクトリなど
● dev/ - 静的ライブラリ(php5ts.lib)置き場● ext/ - PECLモジュール(dll)置き場● extras/ - MIB, SSL, PDF関係のファイル置き場● PEAR/ - PEARインストールパッケージ(*.phar)●
![Page 40: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/40.jpg)
PHPの動作とファイルの関係(1)Apacheモジュールの場合
Apache.exe↓
php5apache*.dll↓
php5ts.dll
![Page 41: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/41.jpg)
PHPの動作とファイルの関係(2)CGIの場合
Apache.exe/IIS↓
php-cgi.exe↓
php5ts.dll
![Page 42: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/42.jpg)
PHPの動作とファイルの関係(3)CLIからの場合
(コマンドプロンプト)↓
php.exe↓
php5ts.dll
![Page 43: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/43.jpg)
php-win.exeが謎だけど・・・
結局php5ts.dll
に行き着きます。
![Page 44: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/44.jpg)
php.ini
重要
![Page 45: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/45.jpg)
デフォルトでは何処にphp.iniがあると(php5ts.dllは)思っているか。
(PHPIniDirをコメントアウトしてApacheを起動)
![Page 46: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/46.jpg)
php.iniの場所の教え方(1)Apacheモジュール
PHPIniDir ディレクティブ
![Page 47: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/47.jpg)
PHPIniDir ディレクティブの効果
PHPIniDir "C:/in_vitro/apps/php5"
![Page 48: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/48.jpg)
php.iniの場所の教え方(2)exe系から叩く時
"-c "オプション
php(-cgi).exe -c ...\php.ini
![Page 49: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/49.jpg)
php.iniは重要
・・・ですが、セキュリティ関係の設定は大垣先生の資料を参
考にするとして。
![Page 50: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/50.jpg)
プログラミングする上で
普通に重要な設定が二つあります。
![Page 51: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/51.jpg)
二つ。
"include_path"
と
"extension_dir"
![Page 52: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/52.jpg)
"include_path"
{require|include}(_once)する時に指定されたファイルを探
すディレクトリの一覧。
![Page 53: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/53.jpg)
"include_path"の設定をミスると・・・
PEARのライブラリファイルが見つからなくなったりします。
アプリのrequire/includeで失敗したりします。
![Page 54: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/54.jpg)
"extension_dir"
"extension"で読み込むDLLの入っているディレクトリ。
MySQL接続とか、mbstringとか・・・。
![Page 55: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/55.jpg)
"extension_dir"の設定をミスると・・・
DBに接続できなくなったり、いろいろと出来なくなります。
![Page 56: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/56.jpg)
これほど重要な設定なのに・・・
php.ini-recommendedのデフォルト設定は役立たず。
(´・ω・`)
![Page 57: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/57.jpg)
"include_path"のデフォルト
;include_path = ".;c:\php\ includes"
コメントアウトされてるし。
![Page 58: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/58.jpg)
"extension_dir"のデフォルト
extension_dir = "./"
イヤ、それ、違うし。
![Page 59: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/59.jpg)
なので
この二項目はすぐに正しいディレクトリに書き換えて下さい。
include_pathについてはPEARを入れてから調整しても良いで
すが・・・
![Page 60: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/60.jpg)
extension_dirについては直ぐに。
でないと、php_zipやmbstringなどが読み込めない
=PEARのインストールを始めとして
色々支障が出ます。
![Page 61: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/61.jpg)
3.CUIで動かす時の最小構成
突然ですが、Windows用のPHPって"可愛い"と思うのです。
![Page 62: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/62.jpg)
理由
・好きな場所における。・ファイルの組み合わせが
楽。・*nixと違ってディレクトリ構成の制約が少ない。
![Page 63: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/63.jpg)
極端な話
php5ts.dllphp.exephp.ini
だけでCLIで実験できる!
![Page 64: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/64.jpg)
CLIの構成例
● php5ts.dll● php.ini● php(-win).exe : php-winとの使い分けは後述。● ext/php_***.dll : お好みのDLL● boot.bat : プログラム実行用BATファイル●
● 他、PHPスクリプトファイル。
![Page 65: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/65.jpg)
秘密1
%~dp0
![Page 66: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/66.jpg)
%~dp0とは?
%0がバッチファイル名。(boot.bat)
~dでドライブ名展開。~pでファイル名を除くパス
名に展開。
![Page 67: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/67.jpg)
秘密2
php(-win).exeの"-d"オプション。
![Page 68: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/68.jpg)
"-d"オプション
php.iniの設定項目を上書き。
![Page 69: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/69.jpg)
秘密3
php-win.exe+
"start"コマンド in boot.php
![Page 70: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/70.jpg)
php-win.exe
コマンドプロンプトウインドウを表示せずにPHPスクリプ
トを実行可能。
![Page 71: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/71.jpg)
"start"コマンド
kickしたプロセスの終了を待たずに、処理続行
=boot.bat自体は終了。
![Page 72: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/72.jpg)
組み合わせれば・・・
タスクスケジューラからkickされる定時実行バッチもPHPスクリプトで書ける!
![Page 73: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/73.jpg)
配布ファイルも柔軟に構成可能だから
PHP実行環境と一緒に配布することも可能。
(=配布先でわざわざPHPを"インストール"する必要
無し。)
![Page 74: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/74.jpg)
まとめ
● インストーラやXAMPを使わず、zipから展開すれば、レジストリも弄らないし、PHP本体のバージョンアップに対する追従も楽。
● php5ts.dll, php.ini重要。● php.iniではextension_dirとinclude_pathに注
意。● "%~dp0", php-win.exe, "start"コマンドでPHPスクリプトを柔軟に配布・実行可能。
![Page 75: PHP With Windows binary](https://reader034.vdocuments.net/reader034/viewer/2022051817/547ea8b65906b597718b4745/html5/thumbnails/75.jpg)
Windows用のPHP5バイナリって
実は結構使い勝手が良い言語環境だと思う。