EUC-KR (PHP4, Mysql 4.x) 버전을 PHP5.6으로 이전 할 수있는 방법이 있을까요?
본문
안녕하세요.
EUC-KR (PHP4, Mysql 4.x) 버전을 PHP5.6으로 이전 할 수있는 방법이 있을까요?
PHP4를 바로 5.6으로 올리니
에러가 나서요.
조언 좀 부탁드립니다.
답변 2
- https://www.php.net/manual/en/appendices.php
- http://docs.php.net/manual/kr/appendices.php
"Migrating from PHP 4 to PHP 5.0.x"부터 보면 됩니다.
<? → <?php
짧은 PHP 시작 태그 <?를 사용하려면, php.ini - short_open_tag = On 설정 (설정 변경 시 웹 서버 재시작)
PHP v5.4 이상부터, $HTTP_*_VARS 변수가 제거되었습니다.
$HTTP_GET_VARS → $_GET / $HTTP_POST_VARS → $_POST 처럼
Superglobals로 변경해줘야 합니다. $_GET, $_POST, $_COOKIE, $_SESSION, $_FILES 등.
$PHP_SELF, $REMOTE_ADDR 등 구 버전에서 사용하던 변수도
$_SERVER['PHP_SELF'], $_SERVER['REMOTE_ADDR'] 처럼 Superglobals로 변경.
- https://www.php.net/manual/en/reserved.variables.php
Notice 오류가 많이 뜬다면 php.ini - error_reporting 설정하거나
(PHP_INI_ALL 모드라 꼭 php.ini 에서 수정할 필요는 없습니다.)
또는 PHP 소스 상단(공통으로 호출되는 파일 상단에 한 줄 추가하면 편함)에
error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED) 코드 한 줄 추가로
오류를 줄일 수 있습니다.
- https://www.php.net/manual/en/errorfunc.configuration.php#ini.error-reporting
예) $data['lang'] = 'PHP'; echo $data[lang]; → echo $data['lang']; echo "...{$data['lang']}..."; 등 다양
// Notice: Use of undefined constant lang - assumed 'lang' in SOURCE on line LINE
PHP v5.6이니까 MySQL(Original) 함수 사용 가능한 환경인데,
<?php phpinfo(); 실행으로 mysql 뜨는지,
아니면 <?php echo function_exists('mysql_connect') ? 'O' : 'X'; 실행으로 O가 뜨는지 확인해서
mysql이 뜨거나 O가 뜨면 DB 부분은 거의 그대로 사용 가능하고,
mysql 항목이 없거나 X가 뜨면 모듈 설치(또는 요청)하거나, MySQLi다 PDO 함수로 바꾸거나
전체적으로 변경하기 곤란하다 싶으면 김정균 님의 래퍼 함수 사용으로 넘어갈 수 있습니다.
- https://phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=80533
* 문자셋 깨지지 않도록 DB 이전 주의.
PHP v5.6이니까 php.ini - register_globals 설정도 제거되어서,
구 버전에서처럼 곧바로 변수를 사용할 수 없습니다.
<input type="text" name="id">... → $id 사용 불가. $_POST['id'] 또는 $_GET['id'] 또는 $_REQUEST['id']
수정할 파일이 많다면, 소스 상단(공통으로 호출되는 파일 상단이면 편함)에
아래처럼 extract() 함수 추가해서 기존처럼 사용할 수 있습니다. (보안을 생각해 교체 추천)
extract($_GET); extract($_POST); ... 쿠키, 세션, 파일 등 마찬가지
일단 이 정도만 보면 될 것 같군요.
해당 버전을 이전하려면 php 버전에 맞춰 기능수정을 봐야 하는 부분이라 에러가 나는 부분은 잡아야 합니다.