【问题标题】:Included variables not working in PHP包含的变量在 PHP 中不起作用
【发布时间】:2010-11-18 16:08:27
【问题描述】:

好的,所以这是非常基本的东西,而且我知道当有人告诉我答案时,我会觉得很傻,但我一辈子都想不通为什么下面的代码不是工作:

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 看起来像:

<?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 文件中的变量似乎没有传递到 index.php。奇怪的是 include('config.php');工作得很好,但在我上面显示的代码中 index.php "echo($fruit);"不打印任何东西。但是 db_config.php 中的同一行确实如此(所以我猜它确实意味着它被包含在内)。不知何故,变量没有传递。请注意,如果这有所不同,db_config.php 文件位于当前目录的父目录中。

我非常困惑,非常欢迎任何帮助。提前致谢,

西蒙

你上面的内容实际上是我所有的 php 代码。

【问题讨论】:

  • 尝试 print_r($fruit) 看看实际发生了什么
  • 试试看 var_dump($fruit) 打印什么

标签: php include variables


【解决方案1】:
【解决方案2】:

您正在尝试包含一个网页...您不能这样做。

include('http://some_domain/public_html/db_config.php') 不会工作...

你想在目录中包含一个文件:

include('C:/some_directory/public_html/db_config.php')

【讨论】:

    【解决方案3】:

    在 index.php 中

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

    【讨论】:

      【解决方案4】:

      你不能像那样在 HTTP 中包含

      来自the manual

      如果“URL fopen wrappers”在 PHP(它们是默认的 配置),您可以指定 使用 URL 包含的文件(通过 HTTP 或其他受支持的包装器 - 请参阅 支持的协议/包装器列表 对于协议列表)而不是 本地路径名。如果目标服务器 将目标文件解释为 PHP 代码,变量可以传递给 使用 URL 请求包含的文件 与 HTTP GET 一起使用的字符串。 这个 严格来说不一样 包括文件并拥有 它继承父文件的变量 范围;脚本实际上是 在远程服务器和 然后将结果包含在 本地脚本。

      【讨论】:

        【解决方案5】:
        <?php
        $_MYSQL = "db_config.php';
        ?>
        

        或者只是将包含更改为

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

        【讨论】:

        • 考虑到向上移动一个目录,这确实修复了它。为什么我不能使用直接链接?
        • 您无法提供文件的 url,例如。 blah.com/inc/config.php 如果您希望从基本 url 中包含此内容,则必须包含 inc/config.php
        【解决方案6】:

        如果与 DB 的连接失败,则变量中有 false,因此 echo false;就像 echo ''; --> 你什么都看不到。

        试试 var_dump($variable);正如 Manzoo Ahmed 向你建议的那样,在 $fruit 上。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-02-17
          • 2014-05-15
          • 2013-10-30
          • 1970-01-01
          • 2011-11-28
          • 2017-06-29
          相关资源
          最近更新 更多