【问题标题】:PHP - Include within Include not workingPHP - 包含在包含不起作用
【发布时间】:2016-02-17 10:45:41
【问题描述】:

我的目录结构如下:

home/admin/super/

在 home 我有一个名为config.php的文件

<?php
//Get relative path - for PHP files
$documentRoot = $_SERVER['DOCUMENT_ROOT'].'/mwo2015/';
include($documentRoot.'library/constants.php');
echo $paypalID;
?>

echo $paypalID 被回显;

在路径 home/admin/ 我有一个名为access-control.php的文件

<?php
//Common files
include('../config.php');
?>

并且 echo $paypalID 再次回显。

在路径 home/admin/super/ 我有一个名为output.php的文件

<?php
include('../access-control.php');
?>

没有输出,我在路径的 error_log 中收到以下错误

PHP Warning:  include() [<a href='function.include'>function.include</a>]: Failed opening '../config.php' for inclusion (include_path='.:/usr/lib64/php:/usr/share/pear')

【问题讨论】:

标签: php


【解决方案1】:

试试这个..

“相对包含路径”不会转移到包含文件中

解决方案是使用绝对路径,您可以使用dirname(__FILE__) 结合相对路径和绝对路径,并获得包含该文件的目录。

在包含文件中,您可以使用以下内容

require_once dirname(__FILE__) . '/yourfile.php';
require_once dirname(__DIR__) . '/yourfile.php';

或

include dirname(__FILE__) . "/yourfile.php";
include dirname(__DIR__) . "/yourfile.php";

【讨论】:

  • 对于 PHP 5.3+,你也可以使用__DIR__
【解决方案2】:

你遇到的问题是这样的:

相对路径使用入口点。因此,如果您开始并转到 home/admin/super/output.php,您将从那里开始。

so home/admin/super.

include('../access-control.php'); 

去主页/管理员

此文件中的包含进入 home/admin 但它应该进入 home 以便解决此问题:

../../config.php

这就是您围绕一个入口点构建应用程序或创建全局根和 webroot 以在整个应用程序中使用的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-29
    • 2014-05-15
    • 2011-03-30
    • 2012-09-22
    • 2018-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多