javascript — Получить каталог страницы HTML в файле PHP, который вызывается страницей HTML.

У меня есть HTML-страница, которая использует файл php в качестве файла сценария, например так:

<!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 будет использоваться некоторыми другими файлами HTML, другими файлами HTML, расположенными в разных папках, с использованием одного и того же файла PHP / Javascript. Это проблема, файл PHP должен идеально знать каталог своего «вызывающего», HTML-страницу, которая его использует. Если я жестко закодирую решение в файл PHP для определенного файла HTML, то файл PHP больше не будет полезен для других. Затем я мог бы просто использовать PHP-файл внутри папки каждого HTML-файла, но тогда я бы неоднократно повторял один и тот же файл, что очень плохо для обслуживания.

РЕДАКТИРОВАТЬ 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 теперь будет содержать код Javascript, который существовал ранее в script.js.php. Этот файл и newfile.js.php остаются в родительском каталоге; script.js.php будет повторяться (и при необходимости корректировать путь к newfile.js.php) внутри любых необходимых каталогов HTML.

0

Решение

Ты можешь использовать имя_директории:

$parentDir = dirname(dirname(__FILE__));

__FILE__ ссылка на текущий скрипт PHP (script.js.php). Таким образом, вы получаете родительский каталог файла, затем вы получаете родительский каталог этого каталога.

1

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

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

По вопросам рекламы [email protected]