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>

tst2.phpWeb ブラウザーから呼び出すと、次のようになります。

whoami: apache 
/dados/capture content ...

フォルダーのアクセス許可を変更し、でディレクティブを作成しようとしました<directory><directory>httpd.conf、結果は変わりません。

私は別のディレクトリでコードをテストしましたが/boot、それは驚きでした./mnt/opt

使用globまたはreaddir結果は同じですが、より多くのプロセッサを消費します。

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'); を試してください。Web を閲覧しているユーザーに権限がない可能性があります。したがって、このエラーが発生する可能性があります。

于 2013-03-21T17:56:16.050 に答える