2013-01-04 38 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()' –

相关问题