0

我开发了以下 PHP 代码以读取名为的特定目录/dados/capture

tst2.php

<html>
<body>
<?php
echo "whoami: " . shell_exec('whoami')."<br>\n";
exec('ls /dados/capture/',$base);
echo "/dados/capture content ...<br>\n";
foreach ( $base as $dir )
{
    print $dir ."<br>\n";
}
?>

通过linux命令行“[root$mysite]# sudo -u apache php tst2.php”执行代码返回如下:

<html>
<body>
whoami: apache
<br>
/dados/capture content ...<br>
120130312115149.jpg<br>
120130312115149.swf<br>
120130312115658.jpg<br>
120130312115658.swf<br>
</body>
</html>

从 Web 浏览器调用tst2.php会导致:

whoami: apache 
/dados/capture content ...

<directory><directory>我已尝试更改文件夹的权限并在中创建指令httpd.conf,但结果没有任何更改。

我已经用不同的目录测试了代码,这令人惊讶,因为它也不适用于/boot,/mnt/opt目录。

使用globreaddir结果相同,但消耗更多的处理器。

我正在使用 CentOs 2.6.32-279.22.1.el6.i686、Apache/2.2.15 和 PHP 5.4.12。

有人有类似的问题吗?

4

1 回答 1

0

试试
$out = shell_exec('ls /dir/path 2>&1'); 正在浏览网页的用户可能没有权限。因此,您可能会收到此错误。

于 2013-03-21T17:56:16.050 回答