2009-12-23 57 views
1

嗨我遇到了問題,我的路徑和fopen參考我的Web服務器。PHP fopen文件名。相對還是絕對?

我有一個文件保存在public/dan/new/apps/lovescopes/thisfile.php

thisfile.php將使用fopen「x +」在public/internalServer/lovescopes/xml/2009/12中創建一個新文件。

現在我的錯誤顯示在所在行的fopen是:

  1. ,如果我在路徑相對就像../../../../internalServer/lovescopes/xml/2009/12我結束了一個權限被拒絕的錯誤類型。

  2. 如果鍵入像/public/internalServer/lovescopes/xml/2009/12我結束了絕對路徑「未能打開流:沒有這樣的文件或目錄」

我仍然感到困惑,如果我要使用相對或絕對路徑。我有一個ftp_nlist,它和#2一起工作得很好。 Fopen是一樣的嗎?

與我相信指向相同的路徑不同的錯誤消息

另外,我不知道哪種方式我在做它的權利1或2?

任何形式的幫助將不勝感激。

回答

5

爲什麼不使用使用realpath()與你相對路徑。

另外權限被拒絕表示您嘗試訪問的文件夾不可讀或可由Web服務器或您的PHP進程運行的任何用戶寫入。

此外,如果要一次性讀取/寫入文件,則可能需要使用file_get_contents()file_put_contents()

0

你必須確保你的腳本有權限訪問該文件

3

PHP函數本身既不是絕對的,也不相對的,依賴的路徑。

無論你要涉及到具體路徑的錯誤,無論是權限還是存在的,所以我建議讓你知道的路徑存在並且可以訪問,並試圖說(當前目錄可能是個好地點)。您也可以臨時chmod文件和路徑,以確保您具有讀取權限。打印結果和任何錯誤。

fopen("public/dan/new/apps/lovescopes/test.php"); 
fopen("./test.php"); 

如果這些返回錯誤都沒有,那麼您將知道這只是一個路徑問題。

而且,你的PHP程序可能比用戶不同的權限,所以,要當心一點。

1

此外,還要確保你是相對路徑相對於指定到該函數被調用的文件(不一定是實際的代碼)。
在PHP中使用getcwd()(獲取當前工作目錄; manual)找出該基地的相對路徑關閉的哪個目錄。