PHP:从PHP运行shell命令?

PHP:从PHP运行shell命令?,php,linux,Php,Linux,当我运行此代码时,为什么php不向我显示文件和目录列表?您使用的是一个别名命令。这就是为什么。运行ls时会发生什么情况 来源:和经验ll不是命令。我相信,echo shell_exec(“ls”)将输出目录列表 如果在安全模式下运行PHP,也可能会出现一些问题。这里有更多信息: shell_exec:当PHP在安全模式下运行时,此函数被禁用 最终,您可以使用更安全的替代方法在bash中执行命令,如readdir:。这是一个读取特定目录中文件的函数 readdir($dir\u handle)示例

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

您使用的是一个别名命令。这就是为什么。运行
ls
时会发生什么情况


来源:和经验

ll
不是命令。我相信,
echo shell_exec(“ls”)将输出目录列表

如果在安全模式下运行PHP,也可能会出现一些问题。这里有更多信息:

shell_exec
:当PHP在安全模式下运行时,此函数被禁用

最终,您可以使用更安全的替代方法在bash中执行命令,如
readdir
:。这是一个读取特定目录中文件的函数

readdir($dir\u handle)
示例:

echo shell_exec("ll");

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

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

<?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);
}
?>
shell将告诉您ll是别名还是实际程序

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

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

type -a ll

那么它会为您输出什么呢?除了下面的正确答案(您正在尝试执行别名)之外,请确保您的主机允许您执行服务器端命令。嗨,用户,我认为这是一个有趣的问题,但如果没有更多信息,我不认为它会获得很多支持。考虑一个添加更多的细节,比如当你运行这个命令时你得到的输出,如果你尝试过其他的。我想,这将使这篇文章成为一篇更有价值的文章,也将帮助未来的访问者!祝你好运!:)
shell_exec("ls -l");