我有以下常数: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:我无法做到这一点,因为我在共享主机上。 :( –