繁体   English   中英

在HTML页面调用的PHP文件中获取HTML页面的目录

[英]Get directory of HTML page in PHP file that is called by the HTML page

我有一个使用php文件作为脚本文件的HTML页面,如下所示:

<!doctype html>
<html lang="en">
<head>
...
<script src="../script.js.php"></script>
</head>
...

script.js.php文件具有以下内容:

<?php
  header('Content-type:text/javascript; charset=utf-8');
  $someVar = [];
  foreach (glob('*.txt') as $filename) {
    $someVar[] = $filename;
  }
?>
... here starts the javascript code

可以看出,script.js.php位于HTML文件的父文件夹中,因此发生的情况是PHP glob()函数看到了父文件夹,而不是HTML页面所在的文件夹,因此它将列出所有文本该文件夹中的文件。

有没有办法修改此代码,以便可以将$ someVar与HTML文件文件夹中的文本文件列表一起使用?

谢谢。

编辑:我认为需要澄清。 使用相同的PHP / Javascript文件,位于其他文件夹中的其他一些HTML文件(位于不同文件夹中的不同HTML文件)将使用相同的PHP文件。 这就是问题所在,PHP文件在理想情况下应该能够知道其“调用者”的目录,即使用该文件的HTML页面。 如果我将解决方案硬编码到某个HTML文件的PHP文件中,则该PHP文件将不再对其他HTML文件有用。 然后,我可以简单地在每个HTML文件的文件夹内使用PHP文件,但随后我将同一文件重复多次,这对于维护目的来说是非常糟糕的。

编辑2:我可能已经找到解决问题的方法。 我的HTML文件变为:

...
<script src="script.js.php"></script>
...

script.js.php变为:

<?php
header('Content-type:text/javascript; charset=utf-8');
$curDir = getcwd();
include('../newfile.js.php');
echo file_get_contents("../rest.of.js.code.js");
?>

和newfile.js.php是:

<?php
$someVar = [];
foreach (glob($curDir . '/*.txt') as $filename) {
    $someVar[] = basename($filename);
}

echo "var someVar = " . json_encode($someVar) . ";\r\n";
?>

rest.of.js.code.js现在将包含script.js.php中以前存在的Javascript代码。 该文件和newfile.js.php保留在父目录中; script.js.php将重复存在(并根据需要调整newfile.js.php的路径)在任何所需的HTML目录中。

您可以使用dirname

$parentDir = dirname(dirname(__FILE__));

__FILE__是对当前PHP脚本( script.js.php )的引用。 因此,您要获取文件的父目录,然后获取该目录的父目录。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM