2010-01-11 74 views
1

我在由Plesk管理的Web服務器上安裝了PHP。我有一些PHP include_path問題,我已經縮小到絕對路徑顯然不工作。Plesk上的PHP - 無法看到絕對目錄

所以,如果我嘗試做一個目錄列表,下面的工作:

echo "<h3>Directory listing of .</h3>"; 
foreach (new DirectoryIterator('.') as $fileInfo) { 
    if($fileInfo->isDot()) continue; 
    echo $fileInfo->getFilename() . "<br>\n"; 
}; 

但是,這不會有任何輸出。 (那裏有文件)。

echo "<h3>Directory listing of /var/www</h3>"; 
foreach (new DirectoryIterator('/var/www') as $fileInfo) { 
    if($fileInfo->isDot()) continue; 
    echo $fileInfo->getFilename() . "<br>\n"; 
}; 

輸出:

Directory listing of . 
.htaccess 
index.php 
try.php 

Directory listing of /var/www 

任何想法?

回答

2

如果這是多站點服務器設置,則這可能是正常行爲。 Plesk(或您的系統的其他部分)會將您的PHP實例限制到您當前的網站,並且不允許查看一般目錄var/www

你的PHP運行的用戶是什麼? 該用戶是否有權訪問/ var/www?

+0

謝謝。我剛剛檢查了php用戶並進行了一些測試。PHP可以做一個ls的文件根目錄/ var/www/vhosts//httpdocs而不是/ var()。/www/vhosts//Zend :( drwxr-x --- 12 reportingadmin psaserv 4096 Jan 11 12:54 drwx ------ 5 reportsadmin root 100 Dec 16 15: 39私人 drwxr-xr-x 11 reportingadmin psaserv 4096 Nov 23 19:54 Zend (惱人的評論格式化失敗!) – Dizzley 2010-01-12 11:53:05

1

Plesk將在httpd.conf中添加變量像這樣包括:

php_admin_value open_basedir /var/www/vhosts/_web_domain_/httpdocs/:/tmp/ 

,所以你不能從你的鎖httpdocs和/tmp目錄列出任何父文件夾。您可以使用root ssh帳戶在配置文件中添加manualy。

從您的站點編輯httpd配置文件:/var/www/vhosts/_your_domain_/config/ _httpd.include(Plesk 10是一個隨時間戳發生變化的動態名稱)。

在那裏您可以搜索php_admin_value open_basedir並添加您想使用的文件夾:separator。像:

php_admin_value open_basedir /var/www/vhosts/_web_domain_/httpdocs/:/tmp/:/var/www 

但是,如果你想添加一個文件夾的訪問您的所有網站,如在/ usr /共享/梨文件夾,將需要編輯的Plesk面板文件。

編輯/usr/local/psa/admin/conf/templates/default/service/php.php,變:

echo "php_admin_value open_basedir {$OPT['dir']}/:/tmp/\n"; 

要:

echo "php_admin_value open_basedir {$OPT['dir']}/:/usr/share/pear/:/tmp/\n"; 

Remamber即會授予訪問所有網站到文件夾,可以打破服務器安全。請自行承擔風險。並重新看,如果plesk得到更新將消除您的更改。