-1
echo shell_exec("ll");

このコードを実行すると、phpでファイルとディレクトリのリストが表示されないのはなぜですか?

4

3 に答える 3

5

llは、多くの場合、bash(.bashrcファイル)のデフォルトのエイリアスとして追加されます。

これが当てはまらないかどうかを再確認するには、端末に次のように入力します。

type -a ll

シェルは、llがエイリアスであるか実際のプログラムであるかを通知します。

PHPは、デフォルトのエイリアスがインストールされていない別の環境で実行されます。

おそらく必要なコマンド式は次のとおりです。

shell_exec("ls -l");
于 2012-10-28T04:39:12.920 に答える
5

エイリアスコマンドを使用しています。それが理由です。実行するとどうなりますlsか?

出典:shell_execとエクスペリエンスのPHPページ

于 2012-10-28T04:37:33.640 に答える
5

llコマンドではありません。echo shell_exec("ls");ディレクトリのリストが出力されると思います。

また、PHPをセーフモードで実行している場合は、いくつかの問題が発生する可能性があります。ここに詳細があります:http://php.net/manual/en/function.shell-exec.php

shell_exec:PHPがセーフモードで実行されている場合、この機能は無効になります。

最終的には、 http ://php.net/manual/en/function.readdir.phpのようなbashでコマンドを実行するためのより安全な代替手段があります。これは、特定のディレクトリにあるファイルを読み取る機能です。readdir

readdir($dir_handle)例:

<?php

if ($handle = opendir('/path/to/files')) {
    echo "Directory handle: $handle\n";
    echo "Entries:\n";

    while (false !== ($entry = readdir($handle))) {
        echo "$entry\n";
    }

    closedir($handle);
}
?>
于 2012-10-28T04:37:54.967 に答える