Я пытаюсь поиграть с Phar и использовать пример, приведенный на Phar :: setStub , который должен работать из коробки. (Я просто добавил header
для удобного отображения результатов)
<?php
header("Content-Type: text/plain");
try {
$p = new Phar(dirname(__FILE__) . '/brandnewphar.phar', 0, 'brandnewphar.phar');
$p['a.php'] = '<?php var_dump("Hello");';
$p->setStub('<?php var_dump("First"); Phar::mapPhar("brandnewphar.phar"); __HALT_COMPILER(); ?>');
include 'phar://brandnewphar.phar/a.php';
var_dump($p->getStub());
$p['b.php'] = '<?php var_dump("World");';
$p->setStub('<?php var_dump("Second"); Phar::mapPhar("brandnewphar.phar"); __HALT_COMPILER(); ?>');
include 'phar://brandnewphar.phar/b.php';
var_dump($p->getStub());
} catch (Exception $e) {
echo 'Write operations failed on brandnewphar.phar: ', $e;
}
?>
Я знаю, что нужно выполнить некоторую настройку php .ini:
Я перепробовал почти все места для скрипта и для создания phar, но не могу заставить его работать (предоставив 777 прав на папку, содержащую phar, предоставив 777 прав на папка, содержащая скрипт).
Write operations failed on brandnewphar.phar: BadMethodCallException: Entry a.php does not exist and cannot be created: phar error: unable to create temporary file in /var/www/html/work/myphar/testphar.php:6
Stack trace:
#0 /var/www/html/work/myphar/testphar.php(6): Phar->offsetSet('a.php', '<?php var_dump(...')
#1 {main}
Ошибка возникает в $p['a.php'] ...
строке.
Как заставить его работать? Чего мне не хватает?