0
我開發了下面的PHP代碼,以讀取特定目錄中稱爲/dados/capture
:PHP的readdir,水珠和exec(「ls」的)Apache下返回空數組的一些目錄
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命令行的碼 「[根$ mysite的]#須藤-u阿帕奇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.php
從web瀏覽器導致:
whoami: apache
/dados/capture content ...
我試圖改變權限的文件夾(S)和httpd.conf
創建指令<directory><directory>
,沒有任何變化的結果。
我測試過不同的目錄代碼,這是一個驚喜,因爲它也不適用於/boot
,/mnt
和/opt
目錄。使用glob
或readdir
結果相同,但消耗更多處理器。
我使用CentOs 2.6.32-279.22.1.el6.i686,Apache/2.2.15和PHP 5.4.12。
有人有類似的問題嗎?
如果你可以把你的代碼放在codeblocks請。使用代碼塊留下4個空格 – Nikitas 2013-03-21 17:44:18
這似乎是一個權限問題。在命令行上,您以root身份運行腳本。 Apache服務器用戶可能沒有足夠的權限列出文件夾 – Ateszki 2013-03-21 17:45:01