php phar: невозможно создать временный файл - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь поиграть с 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:

php conf

Я перепробовал почти все места для скрипта и для создания 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'] ... строке.

Как заставить его работать? Чего мне не хватает?

...