WAMP服务器不读取包含的PHP文件

时间:2013-07-29 13:57:25

标签: php apache wamp

我有一个我正在处理的网站,它相当简单,但它使用的是MySQL数据库。我使用Apache 2.2.25,PHP 5.4.17和MySQL 5.1在Linux中对该站点进行了初步开发。在这个服务器堆栈上一切正常。但是,我在Windows上使用最新的WAMP服务器时出现了一个非常奇怪的错误。此站点涉及许多文件,但就索引页面而言,有一个基本布局包括:

index.php
->header.php
--->connection.php
--->functions.php
->footer.php

当我加载索引页面时,标题肯定被正确包含,functions.php也是如此,它包含所有站点和数据库函数,包括使用mysqli打开SQL连接的函数。但是,connection.php(包含服务器信息的定义)在加载页面时似乎根本没有读取。我收到了诸如

之类的错误
  

“注意:使用未定义的常量DB_HOST - 在第2行的D:\ wamp \ www \ functions.php中假定为'DB_HOST'”,

即使这些在connection.php中明确定义,并且首先包含connection.php。我也尝试重新组织包含,所以他们这样:

index.php
->header.php
--->functions.php
----->connection.php

这也没有改变问题。我甚至尝试将一个die()和一个mail()添加到connection.php中以进行测试。该文件中没有任何内容被执行。我想重申一下,这个精确的代码和文件布局在LAMP堆栈上运行得很好。我不知道为什么会这样,因为似乎没有理由。

编辑:这应该是我原来的帖子。我的定义代码(在connection.php中)如下:

define("DB_NAME", "lyricsdb");
define("DB_USER", "lyricsdb");
define("DB_PASS", "XXXXXXXXX");
define("DB_HOST", "localhost");

这些常量在functions.php中的以下函数中引用:

function sql_connect($db_host = DB_HOST, $db_user = DB_USER, $db_pass = DB_PASS, $db_name = DB_NAME) {
    $con = mysqli_connect($db_host, $db_user, $db_pass, $db_name) or die('Could not connect to database.');
    return $con;
}

编辑2:如果我将我的定义移动到functions.php文件的顶部,它可以正常工作。这是什么我甚至没有?

1 个答案:

答案 0 :(得分:1)

您的文件很可能被包含在内,但是如果引用这样的数组键,您将始终收到有关未定义常量的警告

$db[DB_HOST];

它们应该被引用为

$db['DB_HOST']

如果您确定您的变量已定义,那么请检查您是否已在变量名称周围添加了's',以便查找键名而不是查找已定义为常量的内容。这只是警告您,如果有define('DB_HOST','something');,那么优先于$db['DB_HOST'],而是会查找$db['something']