echo shell_exec("ll");
このコードを実行すると、phpでファイルとディレクトリのリストが表示されないのはなぜですか?
llは、多くの場合、bash(.bashrcファイル)のデフォルトのエイリアスとして追加されます。
これが当てはまらないかどうかを再確認するには、端末に次のように入力します。
type -a ll
シェルは、llがエイリアスであるか実際のプログラムであるかを通知します。
PHPは、デフォルトのエイリアスがインストールされていない別の環境で実行されます。
おそらく必要なコマンド式は次のとおりです。
shell_exec("ls -l");
エイリアスコマンドを使用しています。それが理由です。実行するとどうなりますls
か?
出典:shell_execとエクスペリエンスのPHPページ
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);
}
?>