2017-11-10 15 views
0

ホストプラットフォームをcPanelからPleskに切り替える際に、私のサイトの1つでスクリプトを使ってメインサイトは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. 私は、DBのログインが含まれているcofig.iniを持っています資格情報。

    [データベース] 、ユーザ名= DATABASE_USER パスワード= ****** DBNAME =データベース名

はその後、私の接続クラスがこれです:

<?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インストールと同じマシンにあると仮定します。

問題は、あなたが提供するホスト名やサーバー設定、またはMariaDBユーザー(lfc_site)のアクセス許可を使用して、Joomlaで動作し、それらをダブルチェックした場合、あなたの資格情報にあるとは限りません。

コード内のlocalhost127.0.0.1に変更して違いがあるかどうかを確認できます。

ない場合は、ご使​​用のサーバーにSSHで接続し、さらなる調査のための

  1. plesk db、その後SELECT user, host FROM mysql.user WHERE user = 'lfc_site';
  2. grep bind /etc/mysql/my.cnf

の出力を提供してください。

関連する問題