bash — как показать файлы в текущем каталоге со встроенным веб-сервером php (в виде командной строки)

Я хочу запустить простой встроенный веб-сервер из PHP через командную строку

php -S 0.0.0.0:8000

и пусть он покажет содержимое текущего каталога.

Начиная с справочной страницы единственно возможная дополнительная опция -S является -t для корня документа. Я знаю, что могу просто создать index.php файл со следующим содержанием

<html>
<body>
<?php
$directory = "./";
$files = glob($directory . "*");

foreach($files as $file) {
echo "<a href=".rawurlencode($file).">".basename($file)."</a><br>";
}
?>
</body>
</html>

но я не хочу создавать файл в этом каталоге.

Разве нельзя запустить этот код в качестве аргумента командной строки? Я попробовал это с опцией -r и даже с виртуальным файлом Bash и -F-опция следующим образом: -F <(… php code here …) но похоже на то, что -S команда только принимает -t как дополнительная команда.

Есть ли какой-нибудь трюк для его достижения?

PS: я знаю, что с python 2 или python 3 легко можно показать текущий каталог с помощью встроенного веб-сервера python с

python -m SimpleHTTPServer   # python 2
python -m http.server        # python 3

но я хочу сделать это с php.

0

Решение

замещать "./" из присваивания переменной $directory с полным путем к каталогу, который вы хотите обслуживать. Или, что еще лучше, измените его на:

$directory = $_SERVER['DOCUMENT_ROOT'].'/';

служить пути, который вы предоставляете в качестве аргумента -t в командной строке.

Положил index.php где вы хотите в файловой системе и добавьте его местоположение (с полным путем) в конец php командная строка.

Если, например, вы сохраните его как /home/erik/index.php, запустите PHP как:

php -S 0.0.0.0:8000 -t /home/erik/web /home/erik/index.php

PHP будет использовать скрипт в качестве маршрутизатора. Он будет запускаться при каждом запросе, и вы можете изменить его для интерпретации запроса ($_GET[], $_SERVER[]) и генерировать различный вывод в зависимости от запрошенного пути и строки запроса.

1

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

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

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