-1
echo shell_exec("ll");

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

4

3 回答 3

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 在安全模式下运行时,此功能被禁用。

最终,您有更安全的替代方法来执行 bash 中的命令,例如readdir: http: //php.net/manual/en/function.readdir.php。这是一个读取特定目录中文件的函数。

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 回答
5

ll 通常作为默认别名添加到 bash(在您的 .bashrc 文件中)。

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

type -a ll

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

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

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

shell_exec("ls -l");
于 2012-10-28T04:39:12.920 回答