【问题标题】:PHP fopen filename. Is it relative or absolute?PHP fopen 文件名。是相对的还是绝对的?
【发布时间】:2010-12-29 15:01:07
【问题描述】:

我的路径和 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?

【问题讨论】:

    标签: php fopen relative-path absolute-path


    【解决方案1】:

    为什么不将realpath() 用于您的相对路径。

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

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

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

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

        【讨论】:

          【解决方案4】:

          另外,请确保您指定的相对路径是相对于调用函数的文件(不一定是实际代码所在的文件)。
          在 PHP 中使用 getcwd()(get current working directory; manual) 来确定您的相对路径的基础目录。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-11-21
            • 2011-07-19
            • 1970-01-01
            • 2011-04-29
            • 2011-10-30
            • 2019-09-09
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多