我有以下常數: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()的替代方法?
如果您試圖刪除open_basedir配置之外的任何文件,則會觸發此錯誤。你可以在php.ini中檢查這個配置。 – Leri
如果您使用PHP> = 5.3,您也可以關閉SafeMode,這在5.3中已棄用,那麼'open_basedir'就不會再出現問題了...... – Havelock
PLB:謝謝,所以我正在尋找解決方法這個! Havelock:我無法做到這一點,因爲我在共享主機上。 :( –