PR

Windows PHPスクリプトを単体exeにする

順番が前後してしまうが、使い慣れたphpスクリプトをWindowsで実行する場合、通常Windowsにphpをインストールする必要がある。作成したプログラムを気軽に使ってもらいたい場合は単体exeが好ましく、またソースを(普段はサーバーに隠蔽されているからという意味で)隠したい場合にもexe化は有効だ。

さて、方法は2種類あって1つはpc.casey.jp » PHP を exe に変換する方法、もう1つはpc.casey.jp » PHP で Windows GUI アプリケーションを作成するだ。それぞれ別物だと思っていたのだが、後者で作成したものも前者で変換できるので、結局CUIだろうがGUIだろうが単体exeにすることができることがわかった。

また何本かテスを作成してみると1つのスクリプトをCUIにもGUIにも変換できることに気がつく。つまり、GUIでwindow制御が必要な呼び出し元と、CUIの呼び出し元が違ったとしても処理するエンジン部分は同一だからrequire等すればよいだけなのだ。なかなか新鮮で面白い。

ここでは詰まったところと、参考文献を記しておく。次回はWindowsでUptimeを取得するサンプルを公開したいと思う。

スポンサードリンク

上記は参考サイトに公開されているサンプルを動作させてみたもの。この時はどう動くかわからなかったから取り敢えずインストールしてみた。現在はGUIでもCUIでも持ち運びながら開発ができるようになっていて、アンインストールされているが実行できる状態。phpもApacheもそういったものは全くインストールしていない。

上記はインストールしてあった状態。インストールすると必要なものをささっと入れてくれる。アイコンも変更され、phpwを開くとGUIで実行される。エディタで開くとソースが見えるという不思議な感覚。

ウィルスではないです

上記はいろいろ試しているとなんとウィルスだと言い出した!

カテゴリ:未解決のセキュリティリスク
日時,リスク,活動,状態,推奨する処理,パス – ファイル名
2010/09/23 12:50,高,window.exe (window.exe) が SONAR によって検出されました,再起動が必要,コンピュータを再起動する必要があります。,d:\bamcompile\window\window.exe

Offにしようがどうしようが実行できない。実行できないときは、WINDOWED(実行時のウィンド非表示)をしないようにするとデバッグに必要な情報を得ることができる場合がある。

PHP4TS.DLL

最大の難関がこれ。結局必要なかった。

Warning: dl(): Unable to load dynamic library ‘c:\php4\php_winbinder.dll’ – 指定
されたモジュールが見つかりません。
in D:\WinBinder\WinBinder-0.46.0\phpcode\include\winbinder.php on line 23

Fatal error: WinBinder extension could not be loaded.
in D:\WinBinder\WinBinder-0.46.0\phpcode\include\winbinder.php on line 24

Warning: dl_memory(): Invalid library (maybe not a PHP library) ‘PHP4TS.DLL’  in
bambalam_init.php on line 1

Warning: wbIsWBObj: NULL WinBinder object in

バッチファイルにしておくと簡単(例)

make_bcp.bat

..\bamcompile project_template.bcp
pause

project_template.bcp

MAINFILE main.php
OUTFILE program.exe
;WINDOWED
COMPRESS
DONTENCODE
DESTINATION /
EMBED src
DESTINATION include
EMBED D:\WinBinder\WinBinder-0.46.0\phpcode\include\winbinder.php
EMBED D:\WinBinder\WinBinder-0.46.0\phpcode\include\wb_generic.inc.php
EMBED D:\WinBinder\WinBinder-0.46.0\phpcode\include\wb_resources.inc.php
EMBED D:\WinBinder\WinBinder-0.46.0\phpcode\include\wb_windows.inc.php
EXTENSION D:\WinBinder\WinBinder-0.46.0\binaries\php4\ext\php_winbinder.dll
EXTENSION D:\bamcompile\php4\php-4.4.9\extensions\php_mbstring.dll

test.bat

@echo off
program.exe
echo;
pause

参考文献

コメント