개발자의 끄적끄적

[php8] Message: rawurlencode(): Passing null to parameter #1 ($string) of type string is deprecated 본문

개발/php

[php8] Message: rawurlencode(): Passing null to parameter #1 ($string) of type string is deprecated

효벨 2024. 12. 26. 09:36
728x90
반응형

[php8] Message: rawurlencode(): Passing null to parameter #1 ($string) of type string is deprecated

 

 

php7 에서 php8 로 업드레이드하면

 

여러가지 문제들이 발생하고는 합니다.

 

그중에서 S3 composer 를 사용하던 중 발생한 문제를 공유해보려고 합니다!

 

아래와 같이 rawurlencode 에러가 나는 경우에는

Message: rawurlencode(): Passing null to parameter #1 ($string) of type string is deprecated

 

에러나는 파일에 가보면 아래와 같이 코드가 되어있을 겁니다!

protected function createCanonicalizedPath($path)
{
    $doubleEncoded = rawurlencode(ltrim($path, '/'));

    return '/' . str_replace('%2F', '/', $doubleEncoded);
}

 

위 코드를 아래와 같이 

 

전달된 $path 값이 null인지 확인하고 기본값을 설정하거나 빈 문자열로 대체해야 합니다!

protected function createCanonicalizedPath($path)
{
    // $path가 null인 경우 빈 문자열로 대체
    $path = $path ?? '';
    $doubleEncoded = rawurlencode(ltrim($path, '/'));

    return '/' . str_replace('%2F', '/', $doubleEncoded);
}

 

위 처럼 예외 처리 로직을 추가하고 나면

 

정상적으로 실행되실 겁니다!

 

rawurlencode() 함수에 null을 전달하는 것이 PHP 8.1 이상에서 더 이상 허용되지 않기 때문에 발생하는 경고 메시지입니다.

이 함수는 문자열을 URL 인코딩하는 데 사용되며, 전달된 값이 null일 경우 PHP 8.1부터 경고를 출력하게 되어 있습니다!

 

참고들 하세요!

반응형
Comments