PHP Windows require_once игнорируется - PullRequest
0 голосов
/ 14 ноября 2011

Моя проблема в том,

Это включаемый файл,

<?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);
......
?>

Но я получил функцию неопределенная ошибка.

Использование Apache в Windows с PHP 5.3

Ответы [ 2 ]

1 голос
/ 14 ноября 2011

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;
    }
}

И помните, проверка журналов ошибок веб-сервера обычно помогает.

Изменить:

Согласно комментариям к этому ответу, вы не включаете файл, которым вы себя считаете. Используйте абсолютный путь для включения, чтобы вы были на 100% уверены в том, что файл включен.

0 голосов
/ 14 ноября 2011

Логика.
Иногда нам это нужно.

Давайте разберемся с вашим делом.

  1. Вы можете увидеть любую «функцию неопределенной ошибки».(Хотя я предпочел бы буквальные и точные сообщения об ошибках PHP, так как они содержат МНОГО полезной информации, давайте предположим, что это обычная ошибка PHP, генерируемая прямо в этом месте).
  2. Мы можем сделать вывод из (1), что выможно увидеть все ошибки произошли.
  3. Итак, из (2) мы можем сказать, что если ошибка файла не найдена, вы будете уведомлены об этом.
  4. Итак, из (3) можно предположить, чтонет ошибок и файл включен правильно.

Что дальше?
Наиболее вероятной причиной получения этой ошибки является неправильный код, который вы опубликовали здесь.
Например, если вы включаете свой файл не как file.php, а какhttp://example.com/file.php результат будет точно таким, как описано.
Или может быть 2 файла с именем file.php, один содержит определение функции, а другой без него.
Или в имени функции может быть опечаткатакже.

Итак, вам просто нужно дважды проверить ваши имена и напечатать некоторую отладочную информацию , чтобы убедиться, что вы включаете правильный файл и вызываете правильную функцию.

...