[PHP-users 34596] phar形式のファイルが実行されない

おさ osa @ osa-p.net
2009年 5月 28日 (木) 12:10:24 JST


こんにちは。おさと申します。

go-pear.pharに使われているphar形式でインストーラを作成しようと
しているのですが、手元の開発サーバで実行されません。

phar形式のファイルについては、pearの中にあった
PHP_Archive_Creatorを使用して作成しました。

これで作ってファイル(install.phar)を拡張子phpに変更し、ブラウザから
呼び出してみたのですが、ソースがそのまま表示されてしまいます。

そして問題のサーバではgo-pear.pharも同様に動作しませんでした。

作成したpharファイルが壊れているのかと思ったのですが、
さくらインターネットや@pagesのサーバにアップすると、
正常に実行されました。

以上のことで、問題は開発サーバ側にあると思うのですが、原因が分からずに
困っております。

環境(問題の開発サーバ)
CentOS 5.2
Apache 2.0.63(ソースからインストール)
PHP 5.2.6 モジュールモード(ソースからインストール)
'./configure'
    '--prefix=/usr/local/php'
    '--with-config-file-path=/usr/local/php/etc'
    '--mandir=/usr/share/man' '--disable-debug'
    '--enable-inline-optimization' '--enable-mbstring'
    '--enable-mbregex' '--enable-zend-multibyte' '--with-bz2'
    '--with-zlib' '--enable-magic-quotes' '--with-mysql=/usr/local/mysql'
    '--with-pdo-pgsql=/usr/local/pgsql' '--with-pgsql=/usr/local/pgsql'
    '--with-apxs2=/usr/local/apache2/bin/apxs' '--with-gd=/usr/local'
    '--with-jpeg-dir=/usr/local' '--with-png-dir=/usr/local'
    '--with-freetype-dir=/usr/local' '--with-regex' '--with-pcre-regex'
    '--disable-ipv6' '--with-mcrypt' '--with-iconv-dir=/usr/local'
    '--with-curl=/usr/local'

--with-bz2や--with-zlibを付けてはみましたが、無圧縮のpharを作っても
違いはありませんでした。
peclのphar.soも入れてみたのですが、これも変化はありませんでした。

さくらインターネットのサーバは
FreeBSD 7.1
PHP 5.2.8 CGIモード
です。phar.soモジュールは読み込まれていません。
ちなみに、go-pear.phpは真っ白になって動きませんでした。PHP4の頃は
動いていたような…。

また今回作成したpharファイルも、ブラウザから見たルートディレクトリだと
動作しますが、一つでも階層が下がると真っ白になりました。
(これは実行されるPHPが悪いのだと思います。)

apacheのエラーログなどにも、なにもでないので、原因の見当が付きません。
同じ現象が発生した方、対処法をご存じの方がおられましたら、
助言をいただけると助かります。

暫定的に、インストーラ(php)とパッケージ(phar)を分けて、
展開しつつインストールすることはできました。
出来れば一つにまとめたいなと思っております。

+-----------------------------------------------------------------------+
 HANDLE:おさ
 EMAIL :osa @ osa-p.net twitter: http://twitter.com/osapon
+-----------------------------------------------------------------------+


PHP-users メーリングリストの案内