2017-11-10 177 views
0

我正在将我的主机平台从cPanel切换到Plesk,似乎遇到了一些问题在我的一个网站上有一个脚本。主站点运行在最新版本的Joomla上,并且使其数据库连接没有错误。我有一个外部脚本,我在cron作业上运行,但似乎没有连接。我得到这个错误:mysqli :: __ construct():(HY000/1045):拒绝用户'lfc_site'@'localhost'的访问(使用密码:YES)

mysqli::__construct(): (HY000/1045): Access denied for user 'lfc_site'@'localhost' (using password: YES) 

我必须假设它与我的连接类这样做,我将它张贴在这里:

  1. 我有一个包含数据库登录一个cofig.ini证书。

    [数据库] 用户名= database_user 密码= ****** 数据库名=数据库名称

然后我的连接类是这样的:

<?php 
//Database connection class 
class Db { 
    protected static $connection; 
    public function connect() {  
    if(!isset(self::$connection)) { 
     global $config; 
     self::$connection = new mysqli('localhost:3306',$config['username'],$config['password'],$config['dbname']); 
    } 
    if(self::$connection === false) { 
     return false; 
    } 
    return self::$connection; 
    } 
    public function query($query) { 
    $connection = $this -> connect(); 
    $result = $connection -> query($query); 
    return $result; 
    } 
    public function select($query) { 
    $rows = array(); 
    $result = $this -> query($query); 
    if($result === false) { 
     return false; 
    } 
    while ($row = $result -> fetch_assoc()) { 
     $rows[] = $row; 
    } 
    return $rows; 
    } 
    public function error() { 
    $connection = $this -> connect(); 
    return $connection -> error; 
    } 
    public function quote($value) { 
    $connection = $this -> connect(); 
    return "'" . $connection -> real_escape_string($value) . "'"; 
    } 
} 
?> 

,最后我的脚本像这样运行查询....

<?php 
require_once('/var/www/vhosts/user/httpdocs/db.php'); 
$config = parse_ini_file('/var/www/vhosts/user/httpdocs/config.ini'); 

$db = new Db(); 
$rows = $db -> select(' 
    SELECT * 
    FROM milestones 
    WHERE status != "arrived" 
    AND departure_time BETWEEN (NOW() - INTERVAL 12 HOUR) 
    AND (NOW() + INTERVAL 12 HOUR) 
    AND type = "4" 
'); 

?> 

我猜测,也许有一个模块未启用,禁止此脚本正确建立连接,正如我所说,Joomla脚本似乎使用完全相同的凭据连接没有问题?

回答

0

你是什么意思的“外部脚本”?

通过您给出的输出我假设它位于与Joomla安装相同的机器上。

这个问题很可能不在于您的凭据(如果它们适用于Joomla并且已经对其进行了双重检查),而是使用您提供的主机名或服务器配置或MariaDB用户(lfc_site)权限。

您可以尝试将代码中的localhost更改为127.0.0.1并查看它是否有任何区别。

如果没有,请ssh到你的服务器,并提供

  1. plesk db输出,然后SELECT user, host FROM mysql.user WHERE user = 'lfc_site';
  2. grep bind /etc/mysql/my.cnf

作进一步调查。

相关问题