0

我一直在本地开发一个简单的站点,现在准备将其部署到我的服务器 - 该站点在本地工作。该站点从 MySql 数据库中读取数据并部署在 Ubuntu 服务器上——我已经安装了我需要的所有东西。

我的页面内容是:

    include "Connection.php";
    $db_handle = mysql_connect($server, $user_name, $password);
    $db_found = mysql_select_db($database, $db_handle);
    //code continues

Connection.php 的内容是:

<?php
  $user_name = "myuser";
$password = "123456";
$database = "results";
$server = "localhost";
?>

使用 PhpMyAdmin,我创建了“结果”数据库,并为它分配了一个名为“myuser”的用户,并拥有所有权限。当我尝试导航到该站点时,我收到错误消息:

Access denied for user 'www-data'@'localhost' (using password: NO)

这让我觉得网站没有读取我的“Connection.php”文件。我是对的,我该如何解决这个问题?我是否需要更改网站文件夹或其他任何内容的权限?

4

2 回答 2

0

当您没有有效的连接并尝试数据库查询时,php/mysql 将尝试使用“www-data”创建连接,该用户是运行 apache 和 php 的系统用户。

在 mysql_connect() 中捕获错误并打印 mysql_error() 消息,这将有所帮助。这可能是因为超出了最大连接数。

尝试在 mysql_connect 和 mysql_select_db 函数中硬编码细节只是为了测试。

还要检查 Connection.php 是否包含在内。使用“require”而不是include,以便在文件丢失时抛出错误。

于 2013-04-04T16:14:57.187 回答
0

使用一些调试...

  1. 尝试使用require()

    如果 PHP 解释器未能包含文件以响应对 include() 或 include_once() 的调用,则会生成警告并在没有该文件的情况下继续执行。其中,未能包含由 require() 或 require_once() 调用的文件会生成致命错误,并且执行会在那里停止。

    并使脚本在连接失败或包含文件时抛出错误。

  2. 再次检查用户名和密码。这包括您甚至检查用户是否存在。

于 2013-04-04T16:06:28.957 回答