Мне нужно разъяснение по управлению файлами php phar, так как в документации я не нашел того, что ожидал.
Более глубоко у меня есть простой проект, как это
[main.php]
<?
include_once("./helloworld.php");
helloworld();
?>
[helloworld.php]
<?
function helloworld() {
echo "Hello World\n";
}
?>
Затем я создал phar-файл с таким скриптом:
[buildphar.php]
<?
$pharfile = '/home/stefano/test.phar';
if (file_exists($pharfile)) unlink($pharfile);
$phar = new Phar(
$pharfile,
FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::KEY_AS_FILENAME,
"test.phar");
$phar->startBuffering();
$phar['main.php'] = php_strip_whitespace("main.php");
$phar['helloworld.php'] = php_strip_whitespace("helloworls.php");
$phar->setStub($phar->createDefaultStub("main"));
$phar->stopBuffering();
Если я распространю [buildphar.php] на другой компьютер, и я попытаюсь запустить его
php buildphar.php
Ошибка: «Неустранимая ошибка: функция« helloworld »не найдена в phar: // (…)», поэтому возникает вопрос:
— Как я могу поддерживать include_once (‘helloword.php’), но удалить их из phar-файла, зная, что эта функция встроена в phar-файл и не требует включения?
— Что не так на моем подходе?
Спасибо всем.
Стефано
Код, который вы даете, не работает. Также раздача buildphar.php
не имеет смысла — вы, вероятно, имеете в виду, что вы распространяете .phar
файл.
Проблема, с которой вы столкнулись (в том числе не работают), может быть решена с помощью Phar::interceptFileFuncs()
в фару заглушки.
Других решений пока нет …