警告:include(../ config / config.php)[function.include]:无法在PHP中打开流

时间:2011-12-26 09:41:28

标签: php

我的PHP文件中出现以下错误。

Warning: include(../config/config.php) [function.include]: failed to open stream: No such file or directory in C:\xampp\htdocs\my-proj\functions\function.php on line 2

让我来描述我的文件夹结构

  1. ROOT文件夹/index.php
  2. functions / function.php
  3. config / config.php
  4. signup / signup.php
  5. 现在,如果我使用绝对路径,那么它在signup.php中给出相同的错误,如果我使用相对路径,那么它在index.php中给出了这个错误

    任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:4)

使用

include("$_SERVER[DOCUMENT_ROOT]/config/config.php");

答案 1 :(得分:3)

文件路径相对于调用的脚本。如果您的应用程序被index.php的http请求调用,则include()路径需要相对于该路径 - 即使include语句本身位于functions.php脚本中。

一个常见的解决方法是使所有路径相对于文档根目录是绝对的:

include("$_SERVER[DOCUMENT_ROOT]/config/config.php");
// Note: leaving out array keys only valid in double quote string context.

这可以在index.php和functions.php中使用。

答案 2 :(得分:0)

如果要包含相对于当前正在执行的文件的文件,请使用include __DIR__."/../config/config.php";。如果您使用的是早于5.3.0的PHP版本(不应该),请替换{ {1}} __DIR__

使用命令行时未设置

dirname(__FILE__),并且要求您的项目与DOCUMENT_ROOT相关,而不是允许用户将其放置在任何位置。如果phpMyAdmin使用了这个变量,你将被迫容纳它而不是只是将它放在你想要的任何地方。这是另一回事,它是一个变量,因此也存在潜在的安全问题。

如果需要config.php,我建议改为使用$_SERVER['DOCUMENT_ROOT'],否则使用require以便在不存在时避免发出警告,并在无法读取时出错(我假设如果存在,则打算使用它。