2013-03-21 37 views
0

我開發了下面的PHP代碼,以讀取特定目錄中稱爲/dados/capturePHP的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目錄。使用globreaddir結果相同,但消耗更多處理器。

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

有人有類似的問題嗎?

+0

如果你可以把你的代碼放在codeblocks請。使用代碼塊留下4個空格 – Nikitas 2013-03-21 17:44:18

+1

這似乎是一個權限問題。在命令行上,您以root身份運行腳本。 Apache服務器用戶可能沒有足夠的權限列出文件夾 – Ateszki 2013-03-21 17:45:01

回答

0

嘗試
$ out = shell_exec('ls/dir/path 2> & 1'); 正在瀏覽網頁的用戶可能沒有權限。所以,你可能會得到這個錯誤。