묻고답하기
마이그레이션(데이터보내기)질문이 있습니다! 도와주세요~
2016.10.16 08:35
스텝1.2.3 까지 설정을 하였는데요....
마지막 스텝 3에서.....
XML저장은 안되고....
URL 복사가 가능해서
데이터 이전 할려는 XE에 [ 데이터 들여오기 ] 복사한 URL을 넣으니.....
0/0개를 완료 했습니다고만 나옵니다.
뭐가 문제인가 싶어서 차근히 들여다 보니
마이그레이션 페이지 상단에 에러 메세지가 나와서 확인해본 결과...(상단 빨간줄)
Warning: Creating default object from empty value in /host/home3/karkalus/html/xe_migration/lib.inc.php on line 23
이부분을 들어가서 확인해본결과..
<?php // Set Timezone as server time if(version_compare(PHP_VERSION, '5.3.0') >= 0) { date_default_timezone_set(@date_default_timezone_get()); } /** * DB의 정보를 구하는 함수 (대상 tool마다 다름) * db에 접속할 수 있도록 정보를 구한 후 형식을 맞춰 zMigration에서 쓸수 있도록 return **/ function getDBInfo($path) { if(substr($path,-1)=='/') $path = substr($path, 0, strlen($path)-1); $config_file = sprintf('%s/files/config/db.config.php',$path); define('__ZBXE__',true); define('__XE__',true); if(!file_exists($config_file)) return; include($config_file); $info->db_type = $db_info->slave_db[0]['db_type']; $info->db_port = $db_info->slave_db[0]['db_port']; $info->db_hostname = $db_info->slave_db[0]['db_hostname']; $info->db_userid = $db_info->slave_db[0]['db_userid']; $info->db_password = $db_info->slave_db[0]['db_password']; $info->db_database = $db_info->slave_db[0]['db_database']; $info->db_table_prefix = $db_info->slave_db[0]['db_table_prefix']; if(substr($info->db_table_prefix, -1) == '_') $info->db_table_prefix = substr($info->db_table_prefix, 0, -1); return $info; } ?>
이부분이 잘못되었다고 나옵니다...
어떻게 해야되나요?... ㅠ_ㅠ 도와주세요~~
홈페이지 환경
닷홈(dothome) 무료 호스팅
웹서버 정보 - Apache 2.2
phpMyAdmin - Version information: 3.2.2
PHP 버전 - MySQL 5.1
Web server - MySQL client version: 5.1.73
MySQL - 서버 버전: 5.1.73-log
XpressEngine Core 1.8.26
댓글 6
-
SimpleCode
2016.10.16 09:36
-
최황삼
2016.10.17 09:01
SimpleCode님, 저의 경우에는 migration을 입장해서 step1에서 설치경로(../xe)를 입력하고 클릭하면
아래와 같이 2개의 구절의 문구가 뜹니다.
Warning: Creating default object from empty value in C:\APM_Server\www\xe_migration\lib.inc.php on line 23
Fatal error: Uncaught Error: Call to undefined function mysql_error() in C:\APM_Server\www\xe_migration\zMigration.class.php:72 Stack trace: #0 C:\APM_Server\www\xe_migration\index.php(32): zMigration->dbConnect() #1 {main} thrown in C:\APM_Server\www\xe_migration\zMigration.class.php on line 72
위의 문구 중 첫째 구절 (Warning: Creating default object from empty value in C:\APM_Server\www\xe_migration\lib.inc.php on line 23)은 SimpleCode님 께서 위에서 언급한 대로 삽입하였더니 사라지고 2번째 구절만 남습니다.
이것을 해결할 수 있도록 도와주시면 감사하겠습니다.
-
SimpleCode
2016.10.17 19:42
mysql_로 시작하는 함수를 모두 mysqli_로 고쳐보세요.
마이그레이션 툴이 PHP7에 맞춰서 있지 않아서 에러가 많이 나네요.예)
mysql_error(...) => mysqli_error(...)
mysql_query(...) => mysqli_query(...)
이 외에도 더 있을 것 같은데 자세히 살펴보지는 못했네요.
이름만 바꿔주면 그대로 호환이 됩니다. -
최황삼
2016.10.17 21:12
SimpleCode 님, 대단히 감사합니다. 가르쳐 주신대로 아래와 같이 수정했더니 해결할 수 있었습니다.
항상 건겅하시고, 뜻하는 일들이 잘 이루시길 빕니다.
lib.inc.php 파일에 아래 소스 추가하고
$info
=
new
stdClass();
zMigration.class.php 파일의 72번줄에 있는 부분을 아래와 같이 수정하였습니다.
mysql_error() => mysqli_error() -
최황삼
2016.10.21 14:59
위와 같이 수정하고 xml파일을 다운로드하게 되었습니다.
그러나 나중에 apache의 log파일을 확인해 보니, error가 무려 9,369 줄이며 아래는 그 중 4줄의 error 입니다. 아직 다운받은 xml파일이 정상적인 것인지 여부는 확인하지 못했습니다.
log 파일에는 error가 뜨지만 다운받은 xml파일은 정상일까요? 알려주시면 감사하겠습니다.
[Fri Oct 21 14:18:19.130829 2016] [:error] [pid 4796:tid 1080] [client 211.33.187.129:64887] PHP Warning: mysqli_error() expects exactly 1 parameter, 0 given in C:\\APM_Server\\www\\xe_migration\\zMigration.class.php on line 72, referer: http://xxxxx.xxxx.com/xe_migration/index.php
[Fri Oct 21 14:18:19.573423 2016] [:error] [pid 4796:tid 1080] [client 211.33.187.129:64887] PHP Warning: Creating default object from empty value in C:\\APM_Server\\www\\xe_migration\\export.php on line 280, referer: http://xxxxx.xxxx.com/xe_migration/index.php
[Fri Oct 21 14:18:19.573423 2016] [:error] [pid 4796:tid 1080] [client 211.33.187.129:64887] PHP Warning: mysqli_fetch_object() expects parameter 1 to be mysqli_result, boolean given in C:\\APM_Server\\www\\xe_migration\\zMigration.class.php on line 143, referer: http://xxxxx.xxxx.com/xe_migration/index.php
[Fri Oct 21 14:18:19.575423 2016] [:error] [pid 4796:tid 1080] [client 211.33.187.129:64887] PHP Warning: Creating default object from empty value in C:\\APM_Server\\www\\xe_migration\\export.php on line 280, referer: http://xxxxx.xxxx.com/xe_migration/index.php
[Fri Oct 21 14:18:19.575423 2016] [:error] [pid 4796:tid 1080] [client 211.33.187.129:64887] PHP Warning: mysqli_fetch_object() expects parameter 1 to be mysqli_result, boolean given in C:\\APM_Server\\www\\xe_migration\\zMigration.class.php on line 143, referer: http://xxxxx.xxxx.com/xe_migration/index.php
-
카르
2016.10.19 09:00
SimpleCode 님 답변 너무~ 감사합니다.
코드를 추가해도 상태는 변화가 없었습니다....ㅠㅠ
결국 이러저런 시도끝에 해결하게 되어 자문 자답을 하고 갑니다!!!
----------- 해결 방안 ---------
결론으로 말씀드리면 마이그레이션에 Step 1. 경로 입력에서 잘 못 되었습니다.
예1) /home/아이디/public_html/xe
예2) ../xe <------ 즉 xe가 설치된 곳(root)폴더를 찾는데서 잘 못 되었더군요...
무료호스팅을 이용할경우 (root)폴더는 명령프로트콜 ( ../ ) <---을 입력하면 안됩니다.
제가 이용하는 닷홈의 예를 들어 홈 디렉토리는 (/host/home3/아이디/public_html) 이렇게 표시됩니다.
여기서 home3는 닷홈에서 임의로 활당된 DB의 루트폴더 위치를 뜻하지만
마이그레이션의 ( ../ )루트값은 xe가 설치된 ( /home/아이디/public_html)을 가르킵니다.
즉 본인의 호스팅의 DB의 home 값을 정확이 알고 절대 경로로 입력을 하시면 됩니다.
만약 본인의 홈디렉토리가 /home/ <- 정확히 입력 되어있다면 ( ../ )을 입력하셔도 무방합니다~
이상 자문 자답이었습니다~
---------------------------------------
lib_inc.php 파일에서
바로 위에
를 넣어보세요.