2009-12-23 58 views
1

嗨我遇到了问题,我的路径和fopen参考我的Web服务器。PHP fopen文件名。相对还是绝对?

我有一个文件保存在public/dan/new/apps/lovescopes/thisfile.php

thisfile.php将使用fopen“x +”在public/internalServer/lovescopes/xml/2009/12中创建一个新文件。

现在我的错误显示在所在行的fopen是:

  1. ,如果我在路径相对就像../../../../internalServer/lovescopes/xml/2009/12我结束了一个权限被拒绝的错误类型。

  2. 如果键入像/public/internalServer/lovescopes/xml/2009/12我结束了绝对路径“未能打开流:没有这样的文件或目录”

我仍然感到困惑,如果我要使用相对或绝对路径。我有一个ftp_nlist,它和#2一起工作得很好。 Fopen是一样的吗?

与我相信指向相同的路径不同的错误消息

另外,我不知道哪种方式我在做它的权利1或2?

任何形式的帮助将不胜感激。

回答

5

为什么不使用使用realpath()与你相对路径。

另外权限被拒绝表示您尝试访问的文件夹不可读或可由Web服务器或您的PHP进程运行的任何用户写入。

此外,如果要一次性读取/写入文件,则可能需要使用file_get_contents()file_put_contents()

0

你必须确保你的脚本有权限访问该文件

3

PHP函数本身既不是绝对的,也不相对的,依赖的路径。

无论你要涉及到具体路径的错误,无论是权限还是存在的,所以我建议让你知道的路径存在并且可以访问,并试图说(当前目录可能是个好地点)。您也可以临时chmod文件和路径,以确保您具有读取权限。打印结果和任何错误。

fopen("public/dan/new/apps/lovescopes/test.php"); 
fopen("./test.php"); 

如果这些返回错误都没有,那么您将知道这只是一个路径问题。

而且,你的PHP程序可能比用户不同的权限,所以,要当心一点。

1

此外,还要确保你是相对路径相对于指定到该函数被调用的文件(不一定是实际的代码)。
在PHP中使用getcwd()(获取当前工作目录; manual)找出该基地的相对路径关闭的哪个目录。