echo shell_exec("ll");
为什么运行此代码时 php 不显示文件和目录列表?
您正在使用别名命令。这就是为什么。跑步时会发生什么ls
?
来源:shell_exec和体验的 PHP 页面
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);
}
?>
ll 通常作为默认别名添加到 bash(在您的 .bashrc 文件中)。
要仔细检查是否不是这种情况,请在终端中键入以下内容:
type -a ll
您的 shell 会告诉您 ll 是别名还是实际程序。
PHP 在没有安装默认别名的不同环境中运行。
您可能想要的命令表达式是:
shell_exec("ls -l");