【问题标题】:Make path accessible at various level of folder on PHP使路径可在 PHP 的各个级别的文件夹中访问
【发布时间】:2012-08-07 06:19:51
【问题描述】:

假设我有一个文件夹,上面有一些文件夹和页面:

  • 文件夹A
    • PageA1.php
  • 文件夹 B
    • 文件夹B1
      • PageB11.php
    • 文件夹 B2
      • PageB21.php
    • PageB1.php
  • 文件夹 C
    • PageC1.php

PageB11 上,我有:

require_once 'FolderB2/PageB21.php';

PageB1 上调用 PageB11 时:

require_once 'FolderB1/PageB11.php';

一切正常。但是现在的问题是,虽然在PageB11上也有调用页面本身的函数(PageB11),然后报错:

Warning: require_once(FolderB2/PageB21.php): failed to open stream: No such file or directory in Path\FolderB\FolderB1\PageB11.php on line X

当我将 PageB11 上的 require_once 行更改为:require_once '../FolderB2/PageB21.php'; 时,就可以了!

我想做的是,如何使所有这些都可以在不同级别的文件夹中访问?有可能这样做吗?谢谢..

【问题讨论】:

    标签: php path


    【解决方案1】:

    如上所述,处理此类情况的最佳方法是通过其绝对路径引用每个文件。这是从文件系统的根开始的路径,与当前文件给出的相对路径不同。

    在 PHP 中有一个神奇的常量__DIR__,它给出了当前文件的绝对路径。在每个 include/require 前面加上那个,你就再也不会看到这个问题了。

    require_once __DIR__ . '/../FolderB2/PageB21.php';
    

    您也可以使用realpath()

    【讨论】:

    • 我得到了:Parse error: syntax error, unexpected ''/../FolderB2/PageB21.php'' (T_CONSTANT_ENCAPSED_STRING) in...
    • Ic,谢谢它现在可以使用。但是我在网上上传页面时担心的是,它可能无法正常工作..
    【解决方案2】:

    您可以添加文件的绝对路径

    require_once('/home/my_host_account/www/FolderB2/PageB21.php');
    

    请验证这是否有效。

    【讨论】:

    • 它不起作用。现在我得到了:Warning: require_once(/home/my_host_account/www/FolderB2/PageB21.php): failed to open stream:...。仅供参考,我正在使用本地主机..
    • 首先调用 dirname('../FolderB2/PageB21.php') 看看哪个是你的根文件夹。然后将结果放入 require_once 函数中。
    【解决方案3】:

    您还可以在每个目录中创建soft-links 引用您的原始文件。但这是一种解决方法,只有在所有其他方法都失败时才应使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-05
      • 2021-03-12
      • 1970-01-01
      • 1970-01-01
      • 2016-06-07
      • 2012-11-30
      • 1970-01-01
      相关资源
      最近更新 更多