ぷぎがぽぎ このページをアンテナに追加 RSSフィード

2010-10-29

[]Pharは便利だけど `--enalbe-zend-multibyte`が有効だと文字化けしてしまう

タイトルのままです。以下にもう少し詳しく。


Pharは複数のファイルを1つのアーカイブにまとめることができ、読み込みも

<?php
include 'sample.phar';

のように全体を読み込んだり

<?php
include 'phar://sample.phar/config.xml';

のように個別にアーカイブの一部を使うこともできる便利な機能です。

PHP5.3からは標準で組み込まれるようになり別途インストールする必要がなくなりさらに身近な存在になりました。

詳しくは公式マニュアルをどうぞ。

404 Not Found


というわけで、色々使えそうだということで色々試そうとしたのですがうまく動きません。

具体的には以下のようなpharを作るスクリプトでsample.pharを作成します。

create.php

<?php
@unlink('sample.phar');
try {
    $phar = new Phar(dirname(__FILE__) . '/sample.phar');
    $phar->setStub('<?php echo "test" .PHP_EOL; __HALT_COMPILER();');
} catch (Exception $e) {
    echo 'Cannot open file: ', $e;
}

これを以下のように呼び出すと...

$ php create.php
$ php sample.phar
?

本来は"test"という文字が表示されるはずが「?」になっちゃってます。

そして、macportsで入れたPHP5.3.3だと動き、自前でコンパイルしたPHP5.3.3だと動かないと。。。

ということはオプションに何かあるはずだと色々確認した結果、`--enalbe-zend-multibyte`を有効にしてPharアーカイブを使うと文字化けすることを確認。

ソースをSJISで書く必要がなければわざわざこのオプションを付けてコンパイルしないほうがいいということですね。余計なオプションは付けない。これ基本と。。

ただ、動かないのはおかしいような気がするのでbugレポートを書いてみました。

というわけで、Pharを使ってハマる方がでてきそうな気がするのでメモを残しておきます。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/brtRiver/20101029/1288342181
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2013 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2014 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2015 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2016 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |