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 * @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개
답변에 대한 댓글 8개
님 생각이 많습니다.
해당 부분을 쓰던 안쓰던 PHP 자체에서 그 함수를 쓰는 구문이 있기 때문에 Warning이 나는거니까
문제는 없습니다.
그부분 주석 처리 하시면 정상동작할겁니다.
님처럼 상위 PHP 버젼이 아닌 하위 버젼을 사용하는 경우.. 그러니까 php버전이 5.3.0 이하인 경우에
spl_autoload_register 함수가 없을테니까 그에 대비한 소스 입니다.
아마 PHP 버젼을 올리면서 해당 부분은 남겨둔거로 보이네요
말그대로 legacy 코드니까
님 같은 경우에는 주석혹은 삭제 하셔도 무방합니다.
if 문인데 조건에 걸린거잖아요 제가?
그러니까 저 문구가 뜬건데 저 기능이 무엇인지 알고 싶어서요
autoupload가 어떨 때 쓰이는건가 싶어서욧
PHP 엔진은 그 소스를 쓸 가능성이 있어서 그냥 메세지를 띄우는겁니다.
그소스를 사용했다고 해서 메세지가 뜨는게 아닙니다.
당연히 코드를 돌면 해당 코드는 사용되지 않겠죠
상위버전을 쓰고 있으니까요
정리하면 PHP는 해당 소스를 실행하기 전에 해당 함수에 대한 코드가 보이니까..
"어 이거 이제 안써 딴거 써" 라고 메세지 보내는거라고 생각하시면 됩니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
올드버전만 그 함수를 쓰는데 제 php버전은 최신버전이라 이상합니다.
또한 그누보드 원본 페이지로 수정한 적이 없습니다.