уточнение по phar файлам

Мне нужно разъяснение по управлению файлами 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-файл и не требует включения?
— Что не так на моем подходе?

Спасибо всем.
Стефано

1

Решение

Код, который вы даете, не работает. Также раздача buildphar.php не имеет смысла — вы, вероятно, имеете в виду, что вы распространяете .phar файл.

Проблема, с которой вы столкнулись (в том числе не работают), может быть решена с помощью Phar::interceptFileFuncs() в фару заглушки.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]