홈 | 로그인 | 마이페이지 | 회사소개 | 고객센터 | 사이트맵 | 리셀러제휴 | 솔루션
코리아호스팅

       ns1.koreahosting.org
       211.39.130.6
       ns2.koreahosting.org
       211.39.130.7

  근무시간외에 문의사항은
  아래의1:1 상담문의를
  이용하시기 바랍니다.
 
 
작성일 : 2009-06-03 조회 : 562314
PHP4에서 PHP5이전시 주의 사항
안녕하세요. 코리아호스팅입니다.

php4버전환경에서 php5버전으로 이전시 문제점입니다.

코리아호스팅의 서버버전환경은 각 상품별페이지에 안내되어 있습니다.


이전 버전과 호환하지 않는 변경점
기존 PHP 4 코드의 대부분은 변경 없이 작동하지만, 다음의 비호환 변경점에 주의를 해야 합니다:


strrpos()와 strripos()가 전체 문자열을 needle로 사용합니다.

문자열 오프셋의 비정상적인 사용은 E_WARNING 대신 E_ERROR를 발생합니다.

array_merge()가 배열만을 받아들이게 변경되었습니다. 배열이 아닌 값을 넘기면, 그러한 인수마다 E_WARNING을 발생합니다. 코드가 갑작스레 E_WARNING를 표시하기 시작할 수 있으므로 주의하십시오.

더이상 Apahce2 SAPI에서 PATH_TRANSLATED 서버 변수를 자동으로 설정하지 않습니다. PHP 4에서는 아파치가 생성하지 않았을 때, SCRIPT_FILENAME 서버 변수와 동일하게 설정했었습니다. 이 변경은 CGI 규격에 따르기 위한 점입니다. 자세한 정보는 버그 #23610를 참고하십시오.

Tokenizer 확장은 더 이상 T_ML_CONSTANT 상수를 정의하지 않습니다. error_reporting을 E_ALL로 설정하면, PHP가 주의문을 생성합니다. T_ML_CONSTANT는 사용되지 않았지만, PHP 4에서 정의되어 있었습니다. PHP 4와 PHP 5 둘 다, T_COMMENT 상수가 //와 /* */를 모두 인식합니다. 그러나 PHP 5에서 도입한, PHP가 처리하는 PHPDoc 스타일 주석 /** */은, T_DOC_COMMENT로 인식합니다.

variables_order가 "S"를 포함하고 있으면, $_SERVER는 argc와 argv를 가져야 합니다. 시스템이 $_SERVER를 생성하지 않게 설정하였다면, 물론 존재하지 않아야 합니다. 변경 후에는 variables_order 설정에 관계 없이, CLI 버전에서 argc와 argv를 사용할 수 있게 만듭니다. 또한, CLI 버전은 항상 전역의 $argc와 $argv도 가집게 되었습니다.

프로퍼티가 없는 객체를 더 이상 "빈" 것으로 판단하지 않습니다.

클래스는 사용하기 전에 정의해야 합니다.

예 B-1. strrpos()와 strripos()가 전체 문자열을 needle로 사용합니다.

var_dump(strrpos('ABCDEF','DEF')); //int(3)

var_dump(strrpos('ABCDEF','DAF')); //bool(false)
?>



예 B-2. 프로퍼티가 없는 객체를 더 이상 "빈" 것으로 판단하지 않습니다.

class test { }
$t = new test();

var_dump(empty($t)); // echo bool(false)

if (!$t) {
// 이 부분이 실행됩니다.
}
?>



다음 예제는 PHP 4에서는 유효하지만, PHP 5에서는 치명적인 오류를 생성합니다.

예 B-3. 클래스는 사용하기 전에 정의해야 합니다.

$test = new fubar();
$test->barfu();

class fubar {
function barfu() {
echo 'fubar';
}
}
?>

[출처] http://php.net

->http://php.filearena.net/manual/kr/migration5.incompatible.php