2017-11-10 19 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. 나는 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가 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

추가 조사를위한하시기 바랍니다.