2017-11-10 221 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

作進一步調查。

相關問題