遇到困难

时间:2018-12-20 19:56:00

标签: php

我正在尝试获取包含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 ,希望 log 文件与 script.php 一起出现,但不会发生。相反,将在 lib 目录中创建 log 文件以及 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');
}

实际上是否可以通过 log.php 获得 script.php 的路径而无需传递任何参数?
我只想包含该脚本,调用一个函数并创建一个新文件以及包含include的脚本。

1 个答案:

答案 0 :(得分:2)

不。除了与当前正在执行的文件有关的元数据外,PHP没有提供任何其他元数据。

可以使文件路径更易于处理的工作是在配置或头文件中定义一个常量,该常量定义了到应用程序根目录的绝对路径。例如:

define('APPROOT', __DIR__);

或者:

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

然后,您可以在应用中定义路径,而不必尝试依赖脚本的运行位置,例如:

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