サンプル・プログラム
bamcompileの準備
Bambalam PHP EXE Compiler から ダウンロードし、ここでは、"C:\php4\bamcompile\" に解凍する。

bamcompile は、PHP4.4.4相当の実行エンジンをEXEプログラムに組み込み、その他必要なPHPソースやエクステンションをEXEファイル内に配置することで、単独で実行可能なEXEプログラムを生成する無償ツールだ。

C:\php4 以下の主なディレクトリ/ファイルは下記のようになっているはずである。

bamcompile は、PHP4.4.4相当の実行エンジンをEXEプログラムに組み込み、その他必要なPHPソースやエクステンションをEXEファイル内に配置することで、単独で実行可能なEXEプログラムを生成する無償ツールだ。

C:\php4 以下の主なディレクトリ/ファイルは下記のようになっているはずである。
C:\php4 │ php-win.exe │ php.exe │ ├─bamcompile │ bamcompile.exe │ ├─extensions │ php_winbinder.dll │ php_mbstring.dll │ ├─programs │ └─isleap3 │ │ isleap3.bcp │ └─isleap3 │ │ isleap3.phpw │ │ php_mbstring.dll │ │ php_winbinder.dll │ └─include │ wb_generic.inc.php │ wb_resources.inc.php │ wb_windows.inc.php │ winbinder.php │ └─WinBinder └─phpcode └─include │ wb_generic.inc.php │ wb_resources.inc.php │ wb_windows.inc.php │ winbinder.php │ ├─db │ changeLog_db.txt │ db_common.inc.php │ db_mysql.inc.php │ db_sqlite.inc.php │ └─fi freeimage.inc.php
新しくプログラムを作るときは、PHP4のextensionsからPHPエクステンション("php_winbinder.dll" とそれ以外にも必要なもの)と、WinBinderの include フォルダを丸ごとコピーする。
サンプル・プログラムの解説:includeに注意
PHPプログラム "isleap3.phpw" は前回の "isleap2.phpw" とほとんど同じだが、WInBinderライブラリ "include/winbinder.php" を相対パス指定で記載していない点が異なる。
bamcompile は、EXEファイルの中にソースコードやDLLファイルを組み込む関係上、相対指定ではうまく解釈されない。そこで、この表名表記にしている。
PHPエクステンションやWinBinderライブラリファイルも、フォルダisleap3以下にコピーしているのもそのためである。
bamcompile は、EXEファイルの中にソースコードやDLLファイルを組み込む関係上、相対指定ではうまく解釈されない。そこで、この表名表記にしている。
PHPエクステンションやWinBinderライブラリファイルも、フォルダisleap3以下にコピーしているのもそのためである。
0009: //WinBinder ライブラリをインクルード
0010: include 'include/winbinder.php';
コンパイル
bamcompile でコンパイルするのに、プロジェクトファイル "isleap3.bcp" を利用する。
bamcompile.exe にPATHを通したら、コマンドラインから "bamcompile isleap3.bcp" を実行する。コンパイルが完了すると、"isleap3.exe" が生成されている。
"isleap3.exe" は、DLL不要で、単独で動作するEXEプログラムである。
bamcompile.exe にPATHを通したら、コマンドラインから "bamcompile isleap3.bcp" を実行する。コンパイルが完了すると、"isleap3.exe" が生成されている。
"isleap3.exe" は、DLL不要で、単独で動作するEXEプログラムである。
プロジェクトファイルの解説
0001: MAINFILE isleap3.phpw
0002: OUTFILE isleap3.exe
0003: DONTENCODE
0004: WINDOWED
0005: COMPRESS
0006: EMBED isleap3
0007: EXTENSION isleap3\php_winbinder.dll
0008: EXTENSION isleap3\php_mbstring.dll
- MAINFILE
- PHPメインプログラムを指定する。
- OUTFILE
- 出力するEXEファイル名を指定する。
- DONTENCODE
- PHPファイルをエンコードしない。日本語プログラムでは必ず指定する。
- COMPRESS
- このオプションを指定すると、コンパイル時にUPXを用いた圧縮を行う。生成後のEXEファイルのサイズをおよそ半分以下に抑えることができる。
- EMBED
- EXEファイルの中に埋め込むファイルの実体を指定する。
- EXTENSION
- EXE内部で使用するPHPエクステンションを指定する。
プロジェクトファイル"isleap3.bcp"を使って作られた "isleap3.exe" プログラムの内部は一は下記のようになる。
isleap3.exe │ isleap3.phpw │ php_mbstring.dll │ php_winbinder.dll └─include wb_generic.inc.php wb_resources.inc.php wb_windows.inc.php winbinder.php
参考サイト
- Bambalam PHP EXE Compiler:公式サイト
- PHPでWindowsアプリ:PHPな毎日
- BamCompile で dll 取り込み時に実行エラー:備忘録
(この項おわり)
そこで今回は、bamcompile を使って、Windows上ででネイティブに実行できるEXEプログラムにコンパイルする方法を紹介する。