2013-01-04 66 views
0

我有以下常數:FSROOT設置如下:getcwd()。我可以在我的應用程序的任何地方使用這個常量,並且不必擔心路徑,例如:require_once(FSROOT . '/includes/php/something.php)unlink()觸發open_basedir限制。但是其他功能都可以工作

不過,我最近實施的一些文件在我的應用程序,並在某些活動中,我需要刪除一些文件,這裏就是我在本地做的:

unlink(FSROOT . '/somefile.pdf'); 

而這完美的作品,我在當地的環境。在服務器上,但是我得到一個錯誤:

unlink(): open_basedir restriction in effect. File(/mnt/var/[...]/app/somefile.pdf) is not within the allowed path(s): (/var/[...]/app/) 

所以,問題似乎是從getcwd()返回但是,這並不符合我的允許的路徑/mnt/目錄!

我有點困惑,因爲FSROOT路徑可用於任何功能,但unlink()。這也是我不想改變它的原因。是否有另一種方法來刪除文件?或者我將不得不手動創建另一個與unlink()一起使用的常量?

或者是否有我應該使用的getcwd()的替代方法?

+0

如果您試圖刪除open_basedir配置之外的任何文件,則會觸發此錯誤。你可以在php.ini中檢查這個配置。 – Leri

+0

如果您使用PHP> = 5.3,您也可以關閉SafeMode,這在5.3中已棄用,那麼'open_basedir'就不會再出現問題了...... – Havelock

+0

PLB:謝謝,所以我正在尋找解決方法這個! Havelock:我無法做到這一點,因爲我在共享主機上。 :( –

回答

0

原來我存儲在非持久性方式文件的路徑,和我的主人有時來回移動的服務器上我的應用程序,因此該路徑將改變,並取消鏈接()將嘗試訪問不存在的路徑......所以這裏真的沒有什麼可以回答的,對不起。

0

您是否試過將dirname與FILE結合使用以獲取正確的路徑?

dirname(__FILE__) 
+0

謝謝,但它返回的路徑與'getcwd()' –

相關問題