2014-11-18 4 views
1

Мне очень нужно уточнить, как обрабатывать php-файлы, так как на документации я не нашел ожидаемого.уточнение на phar-файлах

Более глубоко У меня есть простой проект, как этот

[main.php] 
<? 
include_once("./helloworld.php"); 
helloworld(); 
?> 

[helloworld.php] 
<? 
function helloworld() { 
    echo "Hello World\n"; 
} 
?> 

Тогда я создать ФАР файл с таким сценарием:

[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 »not f ound in phar: // (...) ", и поэтому вопрос: - Как я могу включить include_once ('helloword.php'), но удалять их из phar-файла, зная, что функция встроена в файл phar и не нужна быть включенным? - Что случилось с моим подходом?

Спасибо всем. Stefano

ответ

1

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

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

Смежные вопросы