2

次のコードで最初の phar アーカイブを作成しました。

$phar = new Phar('myphar.phar');
$phar->addFile("index.php");
$phar->setStub($phar->createDefaultStub('index.php', 'index.php'));

上記の index.php は単一の出力のみを行います。

echo "I am in a PHP archive!";

上記のコードを実行すると、myphar.phar が作成され、cli で実行すると、「I am in a PHP archive!」という出力が表示されます。ただし、web ブラウザーから myphar.phar を呼び出すと????�???�?、index.php の内容の代わりに などの奇妙な文字が出力され、エラーは発生しません。

phar アーカイブをサポートするために、Apache の httpd.conf に次の行を追加しました。

AddType application/x-httpd-php .phar

CLIでは機能するのにブラウザでは機能しない理由を知っている人はいますか?

4

3 に答える 3

6

この問題への答えはにあります

detect_unicode

php.iniで設定します。

現在、PHPにはバグがあり(http://bugs.php.net/bug.php?id=42396)、detect_unicodeが有効になっていると__halt_compiler()が正しく機能しなくなります。

したがって、一時的な回避策として、

detect_unicode = Off

php.iniで。あなたが支払わなければならない代償は、変数、関数、クラスの名前としてユニコード文字を使用できないことです(コメントや文字列内ではまだ問題ありません)

于 2010-06-25T08:05:18.373 に答える