【问题标题】:require_once loads one file, but not the other. no errors displayedrequire_once 加载一个文件,但不加载另一个。没有显示错误
【发布时间】:2012-10-06 10:28:56
【问题描述】:

我的设置如下:

/index.php  
/php/init.php  
/php/config.php  
/php/functions.php

index.php 做的第一件事是:

<?php include 'php/init.php'; ?>  

init.php 然后像这样继续:

<?php  
define('DEBUG',true);   
if(DEBUG){          
error_reporting(E_ALL);  
ini_set('display_errors', '1');  
}  
require_once 'config.php';  
require_once 'functions.php';   
?>

加载页面时,我从functions.php 中收到一堆错误,抱怨缺少应该在config.php 中设置的变量。事实证明,config.php 中的所有内容都被忽略,就好像 require_once 语句不存在一样。 var_dump( get_included_files()); 证实了这一点。

它不会显示任何错误,如果我简单地将 require_once 行替换为 config.php 的内容,它就可以正常工作。 当 config.php 和 functions.php 都只包含一个 echo 命令时,也会发生同样的事情。所以文件的内容应该不是问题。 关于如何确定错误在哪里以及为什么它会包含一个文件而不包含另一个文件,我有点不知道。

谁能帮忙?

【问题讨论】:

  • 没有看到你的功能和配置的内容是不可能评论的。此外,您很可能混淆/误用了变量的范围。
  • 你在哪里包括config.php?在index.phpphp/init.php
  • 对不起,不清楚,我已经对其进行了更精确的编辑。基本上:它包含在 init.php 中,配置和函数的内容不会影响错误。我已经用 echo 替换了它们,没有任何变化。

标签: php require-once


【解决方案1】:

这是代码

_<_?php  
define('DEBUG',true);   
if(DEBUG){          
error_reporting(E_ALL);  
ini_set('display_errors', '1');  
}  
require_once 'config.php';  
require_once 'functions.php';   
?>

属于index.php

如果是这种情况,您的配置和函数路径不正确。

使用

require_once 'php/config.php';  
require_once 'php/functions.php';

而不是

require_once 'config.php';  
require_once 'functions.php';

我想这会解决你的问题。

【讨论】:

  • require_once __DIR__ . '/config.php'; 可能是一种更好的方法。然后,如果您更改目录,它仍然可以工作。如果您的 PHP 版本是 dirname(__FILE__); 而不是 __DIR__
  • 不。代码来自 init.php。抱歉,如果文本中没有明确说明。
  • 尝试使用此代码&lt;?php require_once(dirname(__FILE__) . "/config.php"); ?&gt;
  • 我补充说,这应该添加到您希望调试的每个文件中:例如 if "error_reporting(E_ALL); ini_set('display_errors', '1'); " 仅设置一次我发现主项目的配置可能会发生您得到空白页而没有收到任何错误通知的情况。为我工作了一个 Joomla 项目,希望这对其他人有帮助。 Linuxatico
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-19
  • 1970-01-01
相关资源
最近更新 更多