Возникли проблемы с получением путей

Я пытаюсь получить путь к каталогу, который содержит сценарий PHP. Давайте назовем это script.php. Он также содержит включенный log.php.

script.php:

include_once __DIR__.'/../lib/log.php';
func();

log.php:

function func() {
file_put_contents(__DIR__.'/log', 'Log file successfully created');
}

Я исполняю script.php ожидая журнал файл появляется вместе с script.php но этого не происходит. Что происходит вместо этого журнал файл создается в Lib каталог вместе с log.php файл.
Единственный обходной путь, который я вижу здесь, — это пройти путь к log.php через функцию в качестве аргумента вроде этого:

script.php:

include_once __DIR__.'/../lib/log.php';
func(__DIR__);

log.php:

function func($arg) {
file_put_contents($arg.'/log', 'Log file successfully created');
}

Возможно ли на самом деле получить путь к script.php через log.php не передавая никаких аргументов?
Я просто хочу включить скрипт, вызвать функцию и создать новый файл вместе со скриптом, который содержит include.

0

Решение

Нет. PHP не делает доступными какие-либо метаданные, кроме тех, которые относятся к файлу, который он в данный момент выполняет.

Что ты Можно Чтобы сделать путь к файлу немного проще, определите константу в вашем файле конфигурации или заголовочном файле, которая определяет абсолютный путь к корню вашего приложения. Например:

define('APPROOT', __DIR__);

Или же:

define('APPROOT', __DIR__ . '/../myapp');

Затем вы можете определить пути в своем приложении, не пытаясь полагаться на то, где сценарий происходит, например:

$log_file = APPROOT . '/log/foo.log';
2

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector