unlink()触发open_basedir限制。但其他所有功能都有效

时间:2013-01-04 13:40:39

标签: php unlink

我有以下常量:FSROOT,其设置如下:getcwd()。我可以在我的应用中随处使用此常量,而不必担心路径,例如:require_once(FSROOT . '/includes/php/something.php)

但是,我最近在我的应用程序中实现了一些文件,在某些事件上我需要删除一些文件,这是我在本地做的事情:

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/)

所以问题似乎是从/mnt/返回的getcwd()目录,但这与我允许的路径不匹配!

我有点困惑,因为FSROOT路径可用于除unlink()之外的任何功能。这也是我不想改变它的原因。还有另一种删除文件的方法吗?或者我是否必须手动创建另一个常量才能与unlink()一起使用?

或者我应该使用getcwd()替代吗?

2 个答案:

答案 0 :(得分:0)

您是否尝试将dirname与 FILE 结合使用以获取正确的路径?

dirname(__FILE__)

答案 1 :(得分:0)

原来我以非持久的方式存储文件的路径,我的主机有时会在服务器上移动我的应用程序,因此路径会改变,unlink()会尝试访问不存在的路径......所以这里真的没有什么可以回答的,抱歉。