【问题标题】:PHP require problem with "./"PHP需要“./”的问题
【发布时间】:2023-03-25 23:55:02
【问题描述】:

我在根目录有一个文件 index.php:

<?php
require_once "./include/common.php";
?>

和包含文件夹中的common.php文件:

<?php
require_once "globalConfig.php";
?>

将 globalConfig 文件与 common.php 放在同一文件夹中。树文件夹为:

xxx/index.php

xxx/include/common.php

xxx/include/globalConfig.php

index.php 运行正常。但是,如果我将文件 common.php 更改为:

<?php
require_once "./globalConfig.php";
?>

PHP 显示一个警告,它找不到 globalConfig.php 文件。有什么区别?我认为在“./”的情况下,最外部的包含文件(index.php)会在其当前目录中找到 globalConfig.php。

【问题讨论】:

标签: php include require-once


【解决方案1】:

在你的 index.php 中添加

define('BASE_PATH',str_replace('\\','/',dirname(__FILE__)));

然后在 common.php 中包含这样的内容。

require_once BASE_PATH . '/includes/globalConfig.php';

这将找到确切的路径并对斜杠进行标准化,然后每当您使用BASE_PATH 时,总是从您的 htdocs 的根目录中包含,即 index.php。

【讨论】:

  • 由于 str_replace 将反斜杠转换为斜杠,它的 windows 和 linux 兼容,我在每个项目中都使用。欢迎您。
【解决方案2】:

路径是相对于当前工作目录的;在 web 上下文 (php-cgi) 中,这是最初调用的脚本(直接启动而不是通过 include 启动的脚本)所在的目录。 一个简单的解决方法:

require_once dirname(__FILE__) . '/foobar.inc.php';

【讨论】:

    【解决方案3】:

    我相信路径(即“./”)是相对于 BASE 脚本的,而不是它所包含的文件。出于这个原因,我通常在包含脚本时使用绝对路径。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-13
      • 2014-03-06
      • 2014-01-29
      • 2018-03-16
      • 2013-08-06
      • 1970-01-01
      • 2010-12-13
      • 1970-01-01
      相关资源
      最近更新 更多