【发布时间】: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