0

我在 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.
4

3 回答 3

2

可能您忘记包含一个配置文件,其中 SQL_ 定义完成。

根据您的编辑,取消注释那些定义行:

// * Database Username 
define("SQL_USER", "root");
于 2012-06-15T19:51:49.390 回答
1

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

于 2012-06-15T19:53:02.517 回答
1

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

$foo = $config[SQL_SERVER];

...它应该在哪里:

$foo = $config['SQL_SERVER'];

对于前者,PHP 会(正确地)查找一个名为SQL_SERVER的常量,该常量的值用于数组键,当它没有找到时,您可能打算使用 string 'SQL_SERVER'。这是 PHP 最糟糕的“功能”之一,您看到这些错误表明该代码的作者可能是新手。

作者也有可能分发了一个配置文件,其中包含如下行:

$foo = SQL_SERVER;

...假设您会看到它并将其替换为例如

$foo = "10.0.0.2";

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

The package's README or equivalent should tell you where configuration values should be set—often this is a file named something like config.php or config.inc.php, or sometimes e.g. config.sample.php which you're intended to modify and then rename to config.php.

于 2012-06-15T19:57:27.203 回答