Когда я попробую это:
$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): не удалось open stream: Невозможно создать phar './phar.tar', расширение файла (или комбинация) не распознается или каталог не существует
Я могу использовать file_get_contents, но не должен работать файл_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"