테스트 사이트 - 개발 중인 베타 버전입니다

phpmailer 오류 질문 채택완료

블랑숑 5년 전 조회 4,004

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      * @param string $classname The name of the class to load      */     function __autoload($classname)     {         PHPMailerAutoload($classname);     } }

 

 

에서

 

 

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

 

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

 

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

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
5년 전
로그인 후 평가할 수 있습니다

답변에 대한 댓글 8개

블랑숑
5년 전
if 조건문이 있는데 php 버전에 따른 거거든요

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

또한 그누보드 원본 페이지로 수정한 적이 없습니다.
백수1995
5년 전
헉.. 뭘 잘못했는데 수정이 안되네요..
님 생각이 많습니다.
해당 부분을 쓰던 안쓰던 PHP 자체에서 그 함수를 쓰는 구문이 있기 때문에 Warning이 나는거니까
문제는 없습니다.

그부분 주석 처리 하시면 정상동작할겁니다.
백수1995
5년 전
아니면 deprecate 경고 메세지를 끄셔도 됩니다. ^^
블랑숑
5년 전
저걸 그냥 주석처리 해도 되나요? 저 기능이 뭔가요?
백수1995
5년 전
주석에 적혀있네요 ^^
님처럼 상위 PHP 버젼이 아닌 하위 버젼을 사용하는 경우.. 그러니까 php버전이 5.3.0 이하인 경우에
spl_autoload_register 함수가 없을테니까 그에 대비한 소스 입니다.
아마 PHP 버젼을 올리면서 해당 부분은 남겨둔거로 보이네요

말그대로 legacy 코드니까
님 같은 경우에는 주석혹은 삭제 하셔도 무방합니다.
블랑숑
5년 전
맞아요 근데 제가 우려하는건 제 php 버전을 제대로 못 읽고 있는 것 같아서요

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

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

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

정리하면 PHP는 해당 소스를 실행하기 전에 해당 함수에 대한 코드가 보이니까..
"어 이거 이제 안써 딴거 써" 라고 메세지 보내는거라고 생각하시면 됩니다.
블랑숑
5년 전
아 그런거군요 감사합니다!

댓글을 작성하려면 로그인이 필요합니다.

감사합니다 ^^

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인