티스토리 뷰

반응형

기본적으로 0과 ''은 비교가 될수없다 ''는 문자열이고 0은 숫자이기 때문에

사이트에서 불규칙하게 권한 문제가 생기는 현상이 있어서 그걸 원인 파악하느라 며칠을 고생했는데

파일 흐름 따라 변수 하나씩 강제로 디버그 출력해보고 하다 발견함

아래의 코드를 php 버전에 따라서 출력시켜보면 기본 논리가 아예 다름

<?php
if(''<0){
    echo "현재 조건을 if(''<0){ 으로 주었는데 출력된다"; 
    echo "<br>";
};


// PHP 버전 출력
echo 'PHP version: ' . phpversion() . "<br>";
?>


<?php
// 출력할 코드 작성
$code = <<<'CODE'
<?php
if('' < 0){
    echo "현재 조건을 if(''<0){ 으로 주었는데 출력된다"; 
    echo "<br>";
}

// PHP 버전 출력
echo 'PHP version: ' . phpversion() . "<br>";
?>
CODE;

// 코드 자체를 HTML로 출력
echo "<h3>PHP Code:</h3>";
highlight_string($code);

// 실행 부분
echo "<h3>PHP Execution Output:</h3>";
eval(substr($code, 5));  // '<?php' 제거 후 eval 실행
?>

애초에 변수에 어떤 값이 들어갈지는 전체 코드에서 하나하나 파악해야하는건데

마이그레이션에서 생기는 문제라기 보다는 애초에 버전문제래서 버전 바꾸는게 빠름

적어도 변수가 수천개는 넘을거고 if 조건도 천개는 넘을텐데 그때마다 조건에 맞춰서 
숫자와 문자가 비교되는 경우의 에러처리를 사이트에서 코드로 잡는건 불가능하다고 봄.

물론 처음부터 8.x에서 시작해서 만들었다면 가능하겠지만 이건 
기본 논리인 숫자와 문자는 비교할 수 없다를 뚫어버린 문제래서
마치 휘발유엔진을 등유차에 달고 싶다고 하는 수준의 문제임

 

그냥 타협해서 7..x로 내려야한다.

 

php5.x 에서 php8.x로 이사인데 귀찮아서가 아니라 비용과 시간을 제공한다면 어찌되던 해결하겠지만
한정된 자원이라면 7.x로 가도 문제없다. 

 

애초에  결제사에서 7.2 이상버전을 요구한 것이니까.

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함