【问题标题】:ERRORS with INCLUDE_ONCE Global Variable PHP包含 INCLUDE_ONCE 全局变量 PHP 的错误
【发布时间】:2016-11-10 21:10:47
【问题描述】:

我创建了一个配置文件,其中包含一个我想用作常量的变量。

<?php
$ROOT_PATH = 'C:/Users/me/Documents/app-qas.com/site';
?>

在我想使用变量的 CLASS 页面上,我在实例化 CLASS 之前添加了以下内容:

include_once("config.php");
$root=$ROOT_PATH;

我对班级中的函数进行了适当的范围更改,如下所示: 全局$根; include_once($root."/Library/API/database.inc.php");

当我运行我的应用程序时,它确实执行它的所有数据连接 旨在这样做,但它 STILL 返回以下错误:

警告:include_once(config.php):打开流失败:没有这样的文件 或目录 C:/Users/me/Documents/app-qas.com/site'\class\Posting.class.php 上 第 5 行

警告:include_once():未能打开“config.php”以包含 (include_path='.;C:\php\pear') 在 C:/Users/me/Documents/app-qas.com/site'\class\Posting.class.php 上 第 5 行

注意:未定义变量:ROOT_PATH in C:/Users/me/Documents/app-qas.com/site'\class\Posting.class.php 上 第 6 行

警告:include_once(/Library/API/database.inc.php):打开失败 流:中没有这样的文件或目录 C:/Users/me/Documents/app-qas.com/site'\class\Posting.class.php 上 第 112 行

警告:include_once():打开失败 '/Library/API/database.inc.php' 用于包含 (include_path='.;C:\php\pear') 在 C:/Users/me/Documents/app-qas.com/site'\class\Posting.class.php 上 第 112 行

警告:include_once(/Library/API/database.inc.php):打开失败 流:中没有这样的文件或目录 C:/Users/me/Documents/app-qas.com/site'\class\Posting.class.php 上 第 112 行

警告:include_once():打开失败 '/Library/API/database.inc.php' 用于包含 (include_path='.;C:\php\pear') 在 C:/Users/me/Documents/app-qas.com/site'\class\Posting.class.php 上 第 112 行

如果我注释掉 $root 的包含和硬编码,它会像之前一样运行,但它不会抛出任何错误:

#include_once("joblaunch.php");
#$root=$ROOT_PATH;
$root='C:/Users/me/Documents/app-qas.com/site';

我不明白为什么它在从 config.php 获取变量时运行并抛出错误,但在硬编码路径时运行并没有抛出错误。

【问题讨论】:

  • 为什么不直接使用define('ROOT_PATH', 'C:/Users/me/Documents/app-qas.com/site');ROOT_PATH。这样您就不会有任何范围界定问题。
  • 另外,您需要将global $root 放在使用它的函数中。不在全局范围内。
  • 例如:如果您的database.inc.php 文件中有函数,那么global $root 必须进入这些函数中。不是在您包含文件之前。
  • @KodosJohnson 我试过这个(我已经在函数中有全局 $root )。请参阅下面的评论。
  • 看起来您的脚本甚至不包括config.php 文件。第一个错误说它没有找到它。这就是它无法识别您的配置变量的原因。你确定config.php在同一个目录吗?

标签: php


【解决方案1】:

如果你定义一个常量而不是一个变量,这个问题应该可以解决,

定义

旧:

$ROOT_PATH = 'C:/Users/me/Documents/app-qas.com/site';

新:

define('ROOT_PATH', 'C:/Users/me/Documents/app-qas.com/site');

用法

旧:

$root=$ROOT_PATH;

新:

$root = ROOT_PATH;

【讨论】:

  • 我尝试了你的建议,同样的事情发生了。我将 config.php 更改为定义语句。我将另一个文件更改为 $root = ROOT_PATH;,除了现在的 NOTICE 之外,错误消息是相同的: 注意:使用未定义的常量 ROOT_PATH - 假定为 'ROOT_PATH'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-07
  • 2011-01-17
  • 1970-01-01
  • 2013-09-23
  • 1970-01-01
相关资源
最近更新 更多