从本地服务器连接到数据库

时间:2013-04-01 14:33:44

标签: php mysql

我运营一个大型PHP网站,其中一些页面连接到MySQL数据库,工作正常。 我现在已经创建了一个本地测试服务器并将我的PHP页面和我的数据库下载到wamp服务器,其中不需要数据库连接的页面工作正常。但是,在使用数据库的页面上,mysql_connect()请求会抛出错误:

  

警告:mysql_connect():连接尝试失败,因为连接方在一段时间后没有正确响应,或者由于连接主机无法响应而建立连接失败。

我可以通过将PHP页面上的MySQL请求更改为:

来获得连接
$server="localhost";
$user="root";
$password="";

离开$database="xxxx";(原始名称)

此解决方案意味着我必须使用MySQL请求更改每个页面,然后在开发完成后将其更改回来。

有没有办法让原始MySQL连接请求工作,同时保持PHP页面上的原始安全数据?例如,通过更改wamp服务器config.inc.php文件?

我在config.inc.php文件中尝试了很多组合,但似乎都没有。

3 个答案:

答案 0 :(得分:2)

正如我在评论中所说,如果你在每个文件中都有硬编码的mysql连接凭证,那么你只有两种选择:

  1. 替换每个文件中的凭据(通过大量搜索和替换)
  2. 将相同的凭据放在本地服务器中。如果代码尝试连接到远程主机,则可以将该主机放在指向localhost的主机文件中。这样您就可以模拟远程环境。

答案 1 :(得分:1)

一个好的解决方案是将这些信息保存在您包含在需要mysql连接的所有其他页面中的文件中。

database.php中

$server="localhost";
$user="root";
$password="";
$database = "nameofyourdb"

// Might event do the mysql_connect here

index.php ou任何其他页面

include_once('database.php');
// your code
// containing mysql_query() and so on

然后,当您从本地生产到生产时,您只需要在一个文件中更改信息。

甚至可以使用这样的技巧来避免这种变化:

if ($_SERVER['SERVER_ADDR'] == '127.0.0.1') {
    // local
    $server="localhost";
    $user="root";
    $password="";
    $database = "nameofyourdb";
}
else {
    // production
    $server="localhost";
    $user="...";
    $password="...";
    $database = "...";
}

小心使用不推荐使用的mysql API。例如,您应该转到PDO。

答案 2 :(得分:0)

如前所述,您只需将连接参数移动到非人类可读文件中(如果可能,请在您的网络服务器根目录之外)。通过这种方式,您可以安全地存储它们,而不会冒外线访问的风险。

然后,将您的文件包含在需要它的每个页面中。例子:

的config.inc.php:

<?php
$db['host'] = '127.0.0.1';
$db['user'] = 'user';
$db['pw'] = 'passwd';
$db['name'] = 'dbname';

您甚至可以在此文件中获得创意:

<?php
// Production settings
$db['host'] = '127.0.0.1';
$db['user'] = 'user';
$db['pw'] = 'passwd';
$db['name'] = 'dbname';

// Test/Sandbox settings
/* 
$db['host'] = '127.0.0.1';
$db['user'] = 'user';
$db['pw'] = 'passwd';
$db['name'] = 'dbname2';
*/

然后只需在每次切换环境时切换注释。

然后,只需将此文件包含在需要连接数据库的页面中:

的index.php:

<html><head><tltle>My page</title>
...HTML Code here...
<?php include_once("/path/to/config.inc.php"); // Again, store this file outside the web directory, if possible ?>
<?php mysqli_connect($db['host'],$db['user'],$db['pw'],$db['name']); ?>