PHP Windows require_once被忽略

时间:2011-11-14 14:28:48

标签: php require

我的问题是,

这是包含的文件,

<?php
$dbhost = "localhost";
$dbuser = "****";
$dbpass = "***";
$dbname = "****";

$MYSQL_ERRNO = "";
$MYSQL_ERROR = "";

// Connect To Database
function db_connect() {
global $dbhost, $dbuser, $dbpass, $dbname;
global $MYSQL_ERRNO, $MYSQL_ERROR;

$link_id = mysql_connect($dbhost, $dbuser, $dbpass);

if(!$link_id) {
$MYSQL_ERRNO = 0;
$MYSQL_ERROR = "Connection failed to $dbhost.";
return 0;
}
else if(!mysql_select_db($dbname)) {
$MYSQL_ERRNO = mysql_errno();
$MYSQL_ERROR = mysql_error();
return 0;
}
else return $link_id;
}
?>

主文件具有以下代码以进行数据库连接,

<?php
require_once 'file.php';
$link_id = db_connect($dbname);
......
?>

但是我得到了函数未定义的错误。

在Windows中使用Apache和PHP 5.3

2 个答案:

答案 0 :(得分:1)

1)检查包含的相对路径。

2)仅仅因为PHP文档说你可以使用require_once而没有括号并不意味着你应该这样做。保持一致,使用require_once("file.php");

3)与函数中的花括号一致。你错过了一两个。我想知道你是否按照以下方式重写你的功能:

function db_connect() {
    global $dbhost, $dbuser, $dbpass, $dbname, $MYSQL_ERRNO, $MYSQL_ERROR;
    $link_id = mysql_connect($dbhost, $dbuser, $dbpass);
    if ($link_id === false) {
        $MYSQL_ERRNO = 0;
        $MYSQL_ERROR = "Connection failed to $dbhost.";
        return 0;
    } elseif (mysql_select_db($dbname) === false) {
        $MYSQL_ERRNO = mysql_errno();
        $MYSQL_ERROR = mysql_error();
        return 0;
    } else {
        return $link_id;
    }
}

请记住,检查您的Web服务器错误日志通常会有所帮助。

编辑:

根据此答案的评论,您不包括您认为自己的文件。使用包含的绝对路径,这样您就可以100%确定要包含的文件。

答案 1 :(得分:0)

逻辑。
有时我们需要它。

让我们理清你的情况。

  1. 你可以看到“函数未定义的错误”。 (虽然我更喜欢文字和精确的PHP错误消息,因为它们包含大量有用的信息,但我们假设它在这个地方抛出了常规的PHP错误。)
  2. 我们可以从(1)得出结论,你可以看到发生了alll错误。
  3. 因此,从(2)我们可以判断是否找不到文件错误,您会收到通知。
  4. 因此,我们可以假设(3)没有错误,文件被正确包含。
  5. 下一步是什么?
    您收到此错误的最可能原因是您在此处发布的错误代码 例如,如果您的文件不是file.php而是http://example.com/file.php,则结果将完全按照描述。
    或者可以有2个名为'file.php'的文件,一个包含函数定义,另一个没有它 或者也可以在函数名称中输入拼写错误。

    因此,您只需要仔细检查您的姓名并打印一些调试信息,以确保包含正确的文件并调用正确的功能。