phpmailer 오류 질문

phpmailer 오류 질문

QA

phpmailer 오류 질문

본문

phpmailer로 메일을 보낼 때 오류가 발생합니다.

 

Deprecated: __autoload() is deprecated, use spl_autoload_register() instead in /plugin/PHPMailer/PHPMailerAutoload.php on line 45

이런 메세지가 나오는데요 가서 확인해보면 php버전이 5.3.0 보다 높으면 spl_autoload_register 를 사용하라고 정상적으로 되어 있습니다.

 

위 메세지는 __autoload() 대신 spl_autoload_register 를 쓰라고 하는거 같거든요

 

근데 php 버전은 PHP Version 7.3.1p1 인데 왜 저런 메세지가 나오나요?

(혹시 뒤에 p1 때문에 숫자라고 인식을 안해서 올드버전이라고 생각하는걸까요?)

 

그누보드 버전은 최신입니다.

 

-------------------------------------------------------

if (version_compare(PHP_VERSION, '5.1.2', '>=')) {
    //SPL autoloading was introduced in PHP 5.1.2
    if (version_compare(PHP_VERSION, '5.3.0', '>=')) {
        spl_autoload_register('PHPMailerAutoload', true, true);
    } else {
        spl_autoload_register('PHPMailerAutoload');
    }
} else {
    /**
     * Fall back to traditional autoload for old PHP versions
     * string $classname The name of the class to load
     */
    function __autoload($classname)
    {
        PHPMailerAutoload($classname);
    }
}

 

 

에서

 

 

} else {
    /**
     * Fall back to traditional autoload for old PHP versions
     * string $classname The name of the class to load
     */
    function __autoload($classname)
    {
        PHPMailerAutoload($classname);
    }
}

 

이 부분을 지우니까 정상적으로 메세지 없이 되네요.

 

버전을 잘못 읽어들이는걸까요?

이 질문에 댓글 쓰기 :

답변 2

if 조건문이 있는데 php 버전에 따른 거거든요

올드버전만 그 함수를 쓰는데 제 php버전은 최신버전이라 이상합니다.

또한 그누보드 원본 페이지로 수정한 적이 없습니다.

헉.. 뭘 잘못했는데 수정이 안되네요..
님 생각이 많습니다.
해당 부분을 쓰던 안쓰던 PHP 자체에서 그 함수를 쓰는 구문이 있기 때문에 Warning이 나는거니까
문제는 없습니다.

그부분 주석 처리 하시면 정상동작할겁니다.

주석에 적혀있네요 ^^
님처럼 상위 PHP 버젼이 아닌 하위 버젼을 사용하는 경우.. 그러니까 php버전이 5.3.0 이하인 경우에
spl_autoload_register 함수가 없을테니까 그에 대비한 소스 입니다.
아마 PHP 버젼을 올리면서 해당 부분은 남겨둔거로 보이네요

말그대로 legacy 코드니까
님 같은 경우에는 주석혹은 삭제 하셔도 무방합니다.

맞아요 근데 제가 우려하는건 제 php 버전을 제대로 못 읽고 있는 것 같아서요

if 문인데 조건에 걸린거잖아요 제가?

그러니까 저 문구가 뜬건데 저 기능이 무엇인지 알고 싶어서요

autoupload가 어떨 때 쓰이는건가 싶어서욧

그 함수를 써서 저 메세지가 뜬게 아닙니다.
PHP 엔진은 그 소스를 쓸 가능성이 있어서 그냥 메세지를 띄우는겁니다.
그소스를 사용했다고 해서 메세지가 뜨는게 아닙니다.
당연히 코드를 돌면 해당 코드는 사용되지 않겠죠
상위버전을 쓰고 있으니까요

정리하면 PHP는 해당 소스를 실행하기 전에 해당 함수에 대한 코드가 보이니까..
"어 이거 이제 안써 딴거 써" 라고 메세지 보내는거라고 생각하시면 됩니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 123,532 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT