注册全局效果是否定义了未定义的常量错误?

时间:2012-06-15 19:48:41

标签: php mysql

我在localhost xammp上安装了一个travian脚本,我遇到了很多错误。

其中四个是应该保存mysql信息的通知。 “使用未定义的常量SQL_USE”

是否因为全局寄存器关闭而发生了这四个错误?或者与此无关?

好的,所以GameEngine里面有一个config.php文件。 这个文件,正在执行的当前文件,调用config.php和config.php包含以下内容。

// ***** Database Username
define("SQL_USER", "root");

// ***** Database Password
define("SQL_PASS", "sergfree");

// ***** Database Name
define("SQL_DB", "trav");

// ***** Database - Table Prefix
define("TB_PREFIX", "s1_");

这是包含

include ("../../GameEngine/config.php");

这是当前文件位置C:\ xampp \ htdocs \ install \ include \ multihunter.php 那么为什么这不起作用?

Deprecated: Assigning the return value of new by reference is deprecated in C:\xampp\php\PEAR\Config.php on line 80

Deprecated: Assigning the return value of new by reference is deprecated in C:\xampp\php\PEAR\Config.php on line 166

Notice: Use of undefined constant DB_TYPE - assumed 'DB_TYPE' in C:\xampp\htdocs\GameEngine\Database.php on line 13

Notice: Use of undefined constant SQL_SERVER - assumed 'SQL_SERVER' in C:\xampp\htdocs\GameEngine\Database\db_MYSQL.php on line 17

Notice: Use of undefined constant SQL_USER - assumed 'SQL_USER' in C:\xampp\htdocs\GameEngine\Database\db_MYSQL.php on line 17

Notice: Use of undefined constant SQL_PASS - assumed 'SQL_PASS' in C:\xampp\htdocs\GameEngine\Database\db_MYSQL.php on line 17

Warning: mysql_connect() [function.mysql-connect]: php_network_getaddresses: getaddrinfo failed: No such host is known. in C:\xampp\htdocs\GameEngine\Database\db_MYSQL.php on line 17

Warning: mysql_connect() [function.mysql-connect]: [2002] php_network_getaddresses: getaddrinfo failed: No such host is known. (trying to connect via tcp://SQL_SERVER:3306) in C:\xampp\htdocs\GameEngine\Database\db_MYSQL.php on line 17

Warning: mysql_connect() [function.mysql-connect]: php_network_getaddresses: getaddrinfo failed: No such host is known. in C:\xampp\htdocs\GameEngine\Database\db_MYSQL.php on line 17
php_network_getaddresses: getaddrinfo failed: No such host is known.

3 个答案:

答案 0 :(得分:2)

可能您忘记包含SQL_定义完成的配置文件。

根据您的编辑,UNCOMMENT定义行:

// * Database Username 
define("SQL_USER", "root");

答案 1 :(得分:1)

我的猜测是你缺少一些必需的配置。注册全局变量仅涉及来自实际请求的变量(GET和POST参数,cookie,环境)。您的案例中缺少的常量似乎是实际的数据库凭据,显然它们的缺失会导致连接失败。可能应该有一些文档描述如何设置代码,你应该阅读。

答案 2 :(得分:1)

通知可能是由您或脚本作者在数组键中省略引号引起的,例如:

$foo = $config[SQL_SERVER];

......它应该在哪里:

$foo = $config['SQL_SERVER'];

使用前者,PHP(正确地)查找一个名为SQL_SERVER的常量,其值用于数组键,当它找不到一个决定你可能意味着使用字符串{{1} }。这是PHP最糟糕的“功能”之一,你看到这些错误表明代码的作者可能是新手。

作者也可能使用以下行分发了配置文件:

'SQL_SERVER'

...假设你会看到这个并用例如

代替它
$foo = SQL_SERVER;

(这种配置方法也是一种不好的做法,因为它导致 - 或者应该导致 - 运行时错误,而不是在用户错过某些配置行的情况下提供有用的信息。)

软件包的$foo = "10.0.0.2"; 或同等代码应该告诉您应该在哪里设置配置值 - 通常这是一个名为READMEconfig.php的文件,或者有时候,例如您要修改的config.inc.php,然后重命名为config.sample.php

相关问题