PHP:从PHP运行shell命令?

时间:2012-10-28 04:34:45

标签: php linux

echo shell_exec("ll");

为什么php在运行此代码时不会显示文件和目录列表?

3 个答案:

答案 0 :(得分:5)

您正在使用别名命令。这就是为什么。运行ls时会发生什么?

来源:PHP page for shell_exec和经验

答案 1 :(得分:5)

ll不是命令。我相信echo shell_exec("ls");会输出目录列表。

如果您在安全模式下运行PHP,也会遇到一些问题。您可以在此处获得更多信息:http://php.net/manual/en/function.shell-exec.php

  

shell_exec:当PHP以安全模式运行时,此功能被禁用。

最终,您有更多安全替代方案,可以在readdirhttp://php.net/manual/en/function.readdir.php这样的bash中执行命令。这是一个读取特定目录中文件的函数。

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);
}
?>

答案 2 :(得分:5)

ll经常被添加为bash中的默认别名(在.bashrc文件中)。

要仔细检查是否不是这种情况,请在终端中键入以下内容:

type -a ll

你的shell会告诉你ll是别名还是实际的程序。

PHP在不安装默认别名的不同环境中运行。

您可能想要的命令表达式是:

shell_exec("ls -l");