0

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

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文件的顶部,它工作正常。这是什么我什至没有?

4

1 回答 1

1

It is probable that your file is being included, but you will always get warnings about undefined constant if you reference array keys like this

$db[DB_HOST];

They should be referenced as

$db['DB_HOST']

If you are sure your variable is defined, then check you have included the ''s around the variable name so it looks for a key name rather than looking for something that has been defined as a constant. This is just warning you that if there was a define('DB_HOST','something'); then that would take precedence over your $db['DB_HOST'] and it would instead look for $db['something']

于 2013-07-29T14:03:38.327 回答