Загрузочный файл Nette phar

Я пытаюсь создать однофайловую версию PHP framework Nette 2.4. Я создаю файл phar, используя этот код:

<?php
$phar = new Phar('nette.phar');
$phar->buildFromDirectory(__DIR__ . '/../vendor/nette');
$phar->setStub("<?php
    require 'phar://' . __FILE__ . '/loader.php';
    __HALT_COMPILER();");
$phar->compressFiles(Phar::GZ);

Все отлично, файл создан. Если я попытаюсь использовать эту сжатую версию:

// bootstrap.php
<?php
require __DIR__ . '/nette.phar';
...

Возникает ошибка:

Warning: require(phar://C:\wamp64\www\app\nette.phar/loader.php): failed to open stream: phar error: &quot;loader.php&quot; is not a file in phar &quot;C:/wamp64/www/app/nette.phar&quot; in C:\wamp64\www\app\nette.phar on line 2

Итак, однофайловая версия загружается, но загрузочного файла loader.php нет. Кто-нибудь знает, где ошибка? Спасибо за все предложения!


person Mr. Human    schedule 27.11.2016    source источник
comment
Вы уверены, что есть loader.php? Если вы установили nette через композитор, он должен быть в vendor/nette/nette/Nette/Framework.php.   -  person Jan Tojnar    schedule 28.11.2016


Ответы (1)


Вы не можете создать .phar из Nette, загруженной через Composer. В нем нет некоторых необходимых файлов (например, вашего Loader.php).

Если вы хотите создать .phar, загрузите официальный .zip с https://nette.org/en/download и создайте .phar из папки ./Nette.

__

Кстати, вам не нужно создавать .phar самостоятельно, вы можете найти его в файле .zip в папке Nette-minified

person Grez    schedule 29.11.2016