2009-08-11 16 views
1

好的,所以这是非常基本的东西,我知道当有人告诉我答案时我会感到非常愚蠢,但我不能为了我的生活找出原因下面的代码是不工作:包含的变量不能在PHP中工作

的index.php:

<?php include('config.php'); //this works fine. variables in this file are reached correctly - $_MYSQL is defined there ?> 

<?php include($_MYSQL); ?> 
<?php echo ($fruit);?> 

db_config.php(这是$ _MYSQL链接,这个工作没问题):

<?php 

$fruit = "apple"; 
echo($fruit); 
?> 

的完整性config.php看起来像E:

<?php 

$_MYSQL = 'http://'.$_SERVER['HTTP_HOST'].'/public_html/db_config.php'; 

$BASE_URL = 'http://'.$_SERVER['HTTP_HOST'].'/public_html/Opto10/'; 

?> 

所以顾名思义代码旨在接触这个db_config.php那然后连接到数据库,但由于某些原因在DB_CONFIG文件中的变量似乎并没有传达给指数进行.PHP。奇怪的是include('config.php');工作得很好,但在上面显示在index.php中的代码“echo($ fruit);”不打印任何东西。尽管db_config.php中的同一行(所以我想这意味着它包含在内)。不知何故变量不会传递。只是你知道,如果这有所作为,db_config.php文件位于当前目录的父目录中。

我很困惑,任何帮助都非常值得欢迎。在此先感谢,

西蒙

你有什么abovev简直是我所有的PHP代码。

+0

尝试的print_r($水果),看看有什么实际发生 – Draemon 2009-08-11 15:48:19

+1

尝试,看看什么的var_dump($水果)打印 – akif 2009-08-11 15:48:49

回答

5

无法跨HTTP inlcude像

the manual

如果 “URL fopen封装协议” 中启用 PHP(它们在默认的 配置中),您可以指定使用URL(通过 HTTP或其他支持的包装 - 请参阅 支持的协议/包装列表 获取协议列表)而不是 本地路径名包含的文件( )。如果目标服务器 将目标文件解释为PHP 代码,则可以使用与HTTP GET一起使用的URL请求 字符串将变量传递给包含文件的 。 这个 不严格地说是相同的 东西包括文件和有 它继承父文件的变量 作用域;该脚本实际上是在远程服务器上运行的 ,并且 结果将被包含在 本地脚本中。

0

如果连接到数据库失败,你在变量中有假,所以echo false;就像回声''; - >你什么都看不到。

尝试var_dump($ variable);就像Manzoo Ahmed向你建议的那样。

0
<?php 
$_MYSQL = "db_config.php'; 
?> 

或只是改变包括对

<?php 
include('db_config.php'); 
?> 
+0

考虑到移动了一个目录,这并连接x it。为什么我不能使用直接链接? – Simon 2009-08-11 15:59:07

+0

你不能提供文件的URL例如。 http://blah.com/inc/config.php如果你想包含这个基础url,你将不得不包含inc/config.php – pjanaway 2009-08-11 16:07:15

0

在index.php文件

<?php 

defined("BASEDIR", dirname(__FILE__)); 
defined("DIRMYSQL", BASEDIR . "/public_html/db_config.php"); 

?>