0

コマンドライン経由でphpから簡単な組み込みWebサーバーを実行したい

php -S 0.0.0.0:8000

現在のディレクトリの内容を表示させます。

man ページの時点で可能な唯一の追加オプション-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の組み込みWebサーバーで現在のディレクトリを簡単に表示できることを知っています

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

しかし、私はそれをphpでやりたいです。

4

1 に答える 1

1

"./"変数の割り当てから、$directory提供するディレクトリの完全なパスに置き換えます。または、さらに良いことに、次のように変更します。

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

-tコマンドラインで引数として指定したパスを提供します。

ファイル システム内の任意index.phpの場所に配置し、その場所 (完全なパスを含む) をphpコマンド ラインの末尾に追加します。

たとえば、 として保存した場合、/home/erik/index.phpPHP を次のように起動します。

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

PHP はスクリプトをルーターとして使用します。リクエストごとに実行され、リクエストを解釈して($_GET[]$_SERVER[])、リクエストされたパスとクエリ文字列に応じて異なる出力を生成するように変更できます。

于 2015-08-14T22:46:39.090 に答える