【问题标题】:relative vs absolute path of a file for php includes [duplicate]php文件的相对路径与绝对路径包括[重复]
【发布时间】:2014-09-02 01:06:27
【问题描述】:

所以我设置了这种文件。 /cloud//embed/ 是两个不同的子域。

www
  -cloud
   --config.php
   --files
     ---formSubmit.php
  -embed
    --index.php

/embed/index.php 我有以下代码:

include("/www/cloud/files/formSubmit.php");

/cloud/files/formSubmit.php 我有以下代码:

include("../config.php");

如果我在 cloud.website.com 上并转到 formSubmit.php,一切正常,并且包含配置文件。

但是,如果我在 embed.website.com 上并转到 index.php,则会收到一条错误消息,提示找不到 config.php。

有谁知道我需要做什么才能从任一位置包含我的 formSubmit.php 并包含我的 config.php?

【问题讨论】:

    标签: php file include hierarchy php-include


    【解决方案1】:

    在这种情况下,您对相对路径的使用似乎是有效的,而绝对路径则不是。这是否意味着/www/cloud/files/ 的绝对路径不正确,我不知道。在我的代码中,我倾向于尝试尽可能多地引用文件,如下所示:

    // In embed/index.php
    include_once dirname(dirname(__FILE__)) . '/cloud/files/formSubmit.php';
    

    这样做是获取当前执行文件的目录,然后是父目录,即www,然后从那里返回到我需要的文件的路径。

    访问文件服务器端时,子域不应该有区别(只要文件托管在相同服务器上)。

    【讨论】:

    • 谢谢你,我想我明白你在说什么了。所以../ 的工作方式与dirname() 不同,因为一个是绝对路径,一个是工作路径?
    • 没有。 ../config.php 作为相对路径访问。 /www/cloud/files/formSubmit.php 被作为 absolute 路径访问。您提到第一个有效,第二个无效。该绝对路径可能不正确,因为它通常是 /var/www/...,但无论如何,您可以使用相对路径访问文件,而不是像我上面指出的那样。
    • 为我工作,感谢您花时间解释。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-11
    • 2012-06-19
    • 2010-12-17
    • 1970-01-01
    • 2018-06-09
    • 1970-01-01
    相关资源
    最近更新 更多