1

我的路径和 fopen 参考我的 Web 服务器时遇到问题。

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

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

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

  1. 如果我输入路径作为相对路径,../../../../internalServer/lovescopes/xml/2009/12我最终会出现 Permission Denied 错误。

  2. 如果我输入一个绝对路径,就像/public/internalServer/lovescopes/xml/2009/12我最终得到“无法打开流:没有这样的文件或目录”

如果我应该使用相对路径还是绝对路径,我仍然感到困惑。我有一个 ftp_nlist,它与#2 配合得非常好。Fopen是一样的吗?

还有我认为指向相同路径的不同错误消息,我不知道我做对了 1 还是 2?

4

4 回答 4

6

为什么不将realpath()与您的相对路径一起使用。

此外,权限被拒绝表示您尝试访问的文件夹不可被网络服务器或您的 PHP 进程在其下运行的任何用户读取和/或写入。

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

于 2009-12-23T20:04:00.673 回答
3

PHP 函数本身既不是绝对的也不是相对的,这取决于路径。

您遇到的两个错误都与该特定路径有关,无论是权限还是存在,所以我建议您获取一个您知道存在并且您可以访问并尝试的路径(当前目录可能是一个好地方)。您也可以临时 chmod 文件和路径,以确保您具有读取权限。打印结果和任何错误。

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

如果这些都没有返回错误,你就会知道这只是一个路径问题。

此外,您的 PHP 进程可能与您的用户拥有不同的权限,因此请注意这一点。

于 2010-04-16T02:42:14.847 回答
3

此外,请确保您的相对路径是相对于调用函数的文件指定的(不一定是实际代码所在的位置)。
在 PHP 中使用getcwd()(获取当前工作目录;手册)来确定您的相对路径基于哪个目录。

于 2013-09-10T06:34:23.547 回答
0

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

于 2009-12-23T20:05:45.260 回答