Я пытаюсь создать исполняемый файл php (файл phar) для генерации некоторых файлов, и я хотел бы знать, как получить реальный путь к файлу phar (в коде файла phar).
Я хочу создать папку на том же уровне файла phar и создать новые файлы там, но realpath(__DIR__.'/../')
не похоже на работу.
Спасибо
Как показано в https://stackoverflow.com/a/28775172/282601 __FILE__
Константа имеет полный путь со схемой:
phar:///home/cweiske/Dev/test/phar/test.phar/path/to/foo.php
__DIR__
похож:
phar:///home/cweiske/Dev/test/phar/test.phar/path/to
Так что при звонке realpath(__DIR__)
у тебя еще есть phar://
префикс, который мешает вам загрузить файл.
Вы должны удалить phar://
схема, а также путь к файлу внутри .phar
чтобы получить местоположение фар с __DIR__
,
Гораздо проще Phar::running(false)
, который просто возвращает путь:
/home/cweiske/Dev/test/phar/test.phar
ответ
$string = 'phar://E:/php/www/my.phar';
$string = pathinfo($string);
$_dir_ = parse_url($string['dirname']);
echo $_dir_['host'].':/'.$_dir_['path'];
результат
E:/php/www