2012-06-13 24 views
0

警告:touch()[function.touch]:open_basedir限制有效。 文件()不在允許的路徑中: (/var/www/vhosts/site.com/httpdocs/) /var/www/vhosts/site.com/httpdocs/Manuals/updater.php在線5有 加載您的手冊時出錯,請按返回按鈕並再次嘗試 。basedir問題,我正在閱讀這個權利?

即時通訊設法弄清楚爲什麼這不起作用 - 目前,我使用plesk,它被設置爲默認,這應該工作,因爲這是在httpdocs的子目錄內...

有什麼想法?

UPDATER.PHP

<?php 
// $URL="manualframe.php"; 
$URL=$_GET["URL"]; 
// header('Location: '.$URL.'') ; 
if (touch($URL)) { 
echo 'loading!'; 
} else { 
echo 'There was an error loading your Manual, please press the back button and try again.'; 
} 
echo '<meta http-equiv="refresh" content="1;URL='.$URL.'">'; 
?> 

回答

4

請問手冊目錄是一個符號鏈接到Web根目錄以外的目錄中的任何機會?

open_basedir也對允許的路徑中的符號鏈接起作用。

當腳本試圖打開與文件,例如,fopen()函數或者gzopen(),該文件的位置被檢測:

有關詳細信息,其中規定見PHP manual on open_basedir。當文件在指定的目錄樹之外時,PHP將拒絕打開它。所有符號鏈接都已解決,因此無法通過符號鏈接來避免此限制。如果該文件不存在,那麼符號鏈接將無法解析,並將文件名與(已解析)open_basedir進行比較。

+0

示例文件位於site.com/manuals/folder1/sample.pdf 這裏沒有愚蠢的業務:P – NRGdallas

+0

在這種情況下,您能否向我們提供updater.php的代碼示例? (特別是第5行)。我誤解了錯誤消息;手冊/ updater.php位於允許的路徑內,但您嘗試「觸摸」的文件不是,所以您的語法可能有錯誤。 (很可能是絕對/相對路徑問題,例如,當您嘗試'touch('/ folder1/sample.pdf')'而不是'touch('./ folder1/sample.pdf')' –

+0

無法粘貼代碼代碼添加到主帖子中 顯然是我試過的'/ folder1''./folder1',甚至只是'folder1'-nothin。 – NRGdallas

0

看起來PHP運行在Safe Mode。此限制意味着您無法讀取網頁根目錄之外的任何文件。這可能是updater.php試圖做的事情。

+0

每個plesk面板都禁用安全模式。 所有updater.php所做的都是在手冊子文件夾中取一個文件,觸摸它,然後重定向到它。 – NRGdallas