물어보기XpressEngine

제가 엄청난(?) 일을 만들었네요.  ㅎㅎ

php 버전이 낮아서 7.0으로 업하면서 사이트가 접속이 안되네요.

cPanel 에서 백업/복구를 몇 번을 해봐도 안되네요.

그래서 이런 방법은 어떻게 되는지 문의 드립니다.

 

1. 호스팅 받고 있는 사이트의 폴더를 삭제를 하고

2. 백업 받은 XE 의 data 를 올리고

3. 백업 받은 sql 을 연결을 하는 방법 - 이걸 연결하는 방법을 모릅니다. ㅜ.ㅜ

 

이런 방법이 가능할까요?

 

  • profile
    xe왕초보 2017.08.08 08:18:17

    해결했네요.  호스팅 업체에서 몇 번 복구 작업을 하더니 결국 해결을 해주네요. 

    cPanel 을 이용한 백업 방법이 몇 가지가 있네요.  이거 너무 헷갈리고 혼란스럽네요. 

    혹시 cPanel 사용하는 분중에 백업(data / db) 어떻게 하시는지 공유 부탁드립니다. 

     

  • profile
    xe왕초보 2017.08.08 08:44:47

    얘네들이 남김 댓글이네요.  아까 접속 됐다가 또 안되네요. ㅜ.ㅜ

    XE가 PHP 7.0은 지원하지 않는다는데 맞나요?  아무래도 뭔가 서로 커뮤니케이션이 잘 안되고 있는듯 하네요. 

    그래서 다시 PHP 버전을 5.6으로 다운했더니 접속이 되네요.  XE가 PHP 7.0 은 안되는게 맞나요?

     

    I would like to inform you, that this issue is caused by the fact, that your XpressEngine application does not support PHP 7, as you can verify from the following error_log entry:

    [07-Aug-2017 23:11:04 UTC] PHP Fatal error: Uncaught Error: Call to undefined function mysql_connect() in /home/classes/db/DBMysql.class.php:76
    Stack trace:
    #0 /home/MYDOMAIN/classes/db/DB.class.php(1288): DBMysql->__connect(Array)
    #1 /home/MYDOMAIN//classes/db/DBMysql.class.php(49): DB->_connect()
    #2/home/MYDOMAIN//classes/db/DBMysql.class.php(58): DBMysql->DBMysql()
    #3/home/MYDOMAIN//classes/db/DB.class.php(168): DBMysql::create()
    #4 /home/MYDOMAIN//config/func.inc.php(205): DB::getInstance()
    #5 /home/MYDOMAIN//modules/session/session.controller.php(34): executeQuery('session.getSess...', Object(stdClass))
    #6 [internal function]: sessionController->write('i0h1f4c8kqictg4...', '')
    #7 {main}
    thrown in /home/MYDOMAIN/classes/db/DBMysql.class.php on line 76

    The mysql_* functions have been removed in PHP7, which is causing this error.

    I have tested this, and the application is indeed functioning properly on PHP 5.6, as you can verify from the following screenshot:

  • profile
    android 2017.08.08 09:31:43
    Xe도 7.0지원 합니다. 다만 php7 부터는 sql방식의 db함수를 지원안해서 문제지 그거 빼면은 이상 없습니다.
  • profile
    xe왕초보 2017.08.08 09:40:25
    네. 7.0 지원 되는군요. 그런데 결국 SQL 에서 문제가 있다면 지원이 안되는거죠.
    어서 지원이 되길 바랍니다. ^^
  • profile
    android 2017.08.08 10:04:18
    5버전 대는 sql하고 sqli 함수 둘다지원해서 그런거에요.
  • profile
    android 2017.08.08 10:04:56
    db.confing 파일에 db타입 sql인지 sqli 인지 보실수 있나요?
  • profile
    xe왕초보 2017.08.08 10:11:44
    제가 이해한건 files - config - db.config.php 파일인데 맞나요?
    내용을 보면 첫 머리에 아래와 같이 되어 있네요.

    'master_db' =>
    array (
    'db_type' => 'mysql',
    'db_port' => '3306',
    'db_hostname' => 'localhost',
    'db_userid' => '******',
    'db_password' => '*****************',
    'db_database' => '********',
    'db_table_prefix' => 'xe_',
  • profile
    android 2017.08.08 10:12:39
    역시나 sql네요,dbtype을 mysqli로 바꿔주세요.
  • profile
    xe왕초보 2017.08.08 10:18:11
    mysql 이 2개 나오는데 모두 끝에 i 를 추가해서 다시 올리면 되나요?
    그러면 php 7.0 으로 접속이 된다는 말씀인가요? i 하나가 이렇게 큰 차이가 있는거네요. 와~~
  • profile
    android 2017.08.08 10:54:46
    Db에 접근할때 sql함수냐 sqli 함수냐의 차이입니다.
  • profile
    기진곰 2017.08.08 10:09:36

    db.config.php에서 mysql 또는 mysql_innodb로 되어 있는 설정이 있으면 모두 mysqli 또는 mysqli_innodb로 바꿔주세요. i자 하나만 넣으면 됩니다.

  • profile
    xe왕초보 2017.08.08 10:14:53
    db.config.php 파일 열면 아래와 같습니다. 어디에 i 를 추가하는건가요?
    db_type => mysql 에 i 를 추가하는건가요? 이렇게 하면 어떤 효과가 있나요?

    <?php if(!defined("__XE__")) exit();
    $db_info = (object)array (
    'master_db' =>
    array (
    'db_type' => 'mysql',
    'db_port' => '3306',
    'db_hostname' => 'localhost',
    'db_userid' => '********',
    'db_password' => '*********',
    'db_database' => '**********',
    'db_table_prefix' => 'xe_',
    ),
    'slave_db' =>
    array (
    0 =>
    array (
    'db_type' => 'mysql',
    'db_port' => '3306',
    'db_hostname' => 'localhost',
    'db_userid' => '********',
    'db_password' => '**********',
    'db_database' => '********',
    'db_table_prefix' => 'xe_',
    ),
    ),
  • profile
    기진곰 2017.08.08 10:18:45

    db_type이라고 되어 있는 두 부분에 각각 i를 추가하시면 됩니다.

    PHP에서 MySQL에 접속하는 방법은 두 가지가 있어요. PHP 4.x와 5.x에서는 mysql 함수를 사용하고, PHP 5.x와 7.x에서는 mysqli 함수를 사용합니다. XE에서는 설치 시점에 둘 중 하나를 선택하도록 되어 있고요.

    XE가 처음 나왔을 때는 PHP 4.x 호환성까지 고려했기 때문에 mysql이 기본값이었어요. 5.x에서는 두 가지 모두 사용할 수 있기 때문에 문제가 없었고요. 하지만 PHP 7.x에는 mysqli밖에 없기 때문에 mysql 함수를 사용하려고 하면 오류가 나지요. 예전부터 운영해 오신 사이트라면 수동으로 바꿔줘야 합니다.

  • profile
    xe왕초보 2017.08.08 10:54:31

    네. XE를 설치하고 사용한지는 2년 정도 되어 갑니다. 그리고 매번 업데이트만 하기만 했어요.
    @기진곰 님 말씀은 db.config.php 파일을 열어서 2곳의 mysql 에 i 를 추가하고 저장을 한 후에
    cPanel 의 php 버전 변경에서 7.0 으로 변경을 하면 된다는 말씀이죠?
    하~ 근데 사실 겁부터 나네요. 오늘 몇 시간을 헤매다가 php 를 5.6 으로 되돌려야 된다는 걸 호스팅 얘네들이 알아낸거라서요. 7.0 에서 5.6으로 바꾸니 바로 접속이 되기는 했는데 좀 겁나네요. ㅎㅎ

    .

    .

    i 를 추가하고 php 7.0 으로 변경을 했는데 사이트에 접속이 되네요. ㅎㅎ  이제 이상없이 잘 되겠죠? ^^

  • profile
    기진곰 2017.08.08 11:06:27
    네, 그거만 고치면 코어는 문제 없어요. 다소 예전에 만들어진 서드파티 자료들만 확인해 보시면 됩니다.

서버에 요청 중입니다. 잠시만 기다려 주십시오...