これを試すと:
$phar = new PharData('./phar.tar', 0, null, Phar::TAR);
$phar->addEmptyDir('test');
file_put_contents('phar://./phar.tar/test/foo.txt', 'bar');
次のエラーが表示されます。
警告: file_put_contents(phar://./phar.tar/test/foo.txt): ストリームのオープンに失敗しました: phar './phar.tar' を作成できません。ファイル拡張子 (または組み合わせ) が認識されないか、ディレクトリが認識されません存在
file_get_contents を使用できますが、file_put_contents も機能しないでしょうか?
さらに奇妙なことに、@hakreが彼のコメントで提案したアイデアを試してみましたが、うまくいきました!
$phar = new PharData('./phar.tar', 0, null, Phar::TAR);
$phar->addEmptyDir('test');
if (file_exists('./phar.phar') !== true)
{
symlink('./phar.tar', './phar.phar');
}
file_put_contents('phar://./phar.phar/test/foo.txt', 'bar');
var_dump(file_get_contents('phar://./phar.tar/test/foo.txt')); // string(3) "bar"