とある要件で、複数のファイルを配布する必要が出てきた。
作業の都合上、PHPでインストーラを作れば便利なんじゃないかねと思い、そういえば、Pearのインストーラって、go-pear.pharだったよなと思い出した。
phar形式という、先頭に展開処理があって、後ろのほうにアーカイブがくっついている形式だ。
自己解凍ファイルと言えば解りやすいかも。
んで、pharファイルはどうやって作ろうか、と調べてみると、peclでpharモジュールを入れて、自前でアーカイブを作るページが出てきた。
うーん、やりたいことはgo-pear.pharみたいなことなんだよなぁ。
もう少し調べていると、pearのほうに、PHP_Archive_Creatorというのを見つけた。
アーカイブの作成から、最初に起動するphpファイルの指定まで出来るらしい。
これはすばらしい。
早速、アーカイブの作成処理を書いてみた。
addFile("./install_process.php", "index.php");
//stock( $phar, INSTALL_SOURCE );
// 保存するpharファイル名
$phar->savePhar("install.php");
function stock( &$phar, $dir_name ) {
foreach ( glob( $dir_name . '/*' ) as $filename ) {
$stockname = str_replace( INSTALL_SOURCE . '/', '', $filename );
print $stockname . "\n";
$phar->addFile( $filename, $stockname );
}
}
?>
そして実行すると、install.phpのできあがり。
しかし、これをブラウザから呼び出してみると、思いっきりPHPソースが表示された。
拡張子PHPの他のファイルはちゃんと実行されるのに。
さくらインターネットや@pagesにアップしてみたら、ちゃんと実行された。
ということは、開発環境のサーバが問題らしい。
ファイルの形式がおかしいにしても、拡張子PHPなんだから実行しようとしてくれたっていいのに、そこへも行き着いていない模様。
Apacheのエラーログもなにも出ず、アクセスログにHTTPステータス200が記録される。
一日ぐらい、あれやこれや試してみたんだけど、どうにも原因が分からないので、PHP-usersに投げる。
0 件のコメント:
コメントを投稿