상속 된 사이트가 있으며 새 호스팅 사이트로 마이그레이션 한 후 잘 작동했으며 최신 Smarty 2.6.3 및 PHP 5.6으로 업그레이드했습니다. 오늘 나는 일부 사용자 불만들 후에 사이트에서 이메일을받지 못했다 (회원 등록).phpMailer 함수의 새로운 Smarty()에 치명적인 오류가 발생했습니다.
오늘이 오류가 발생하기 시작했습니다. Fatal error: Cannot redeclare class Smarty
조사 결과 시스템에 두 개의 $temp = new Smarty()
문이 있음을 알 수 있습니다. 사용자가 로그인 할 때 호출되는 스크립트와 phpmailer
을 사용하는 Emailer
클래스의 두 번째 문이 있습니다.
초기 Smarty 설정 변수를 참조하려고하면 call to null
오류가 발생합니다. emailer에서 멋진 코드를 제거하면 전자 메일이 호출되지 않습니다. 내가 말했듯이, 몇 년 잘 작동하고 ... 지난 달의 코드에 변경 사항이 없습니다 ... 여기
// Setup.php
require('../Smarty-2.6.30/libs/Smarty.class.php');
$_TEMP = new Smarty();
class Emailer {...
require('../Smarty-2.6.30/libs/Smarty.class.php');
$temp = new Smarty();
...}
의 필요성 이메일 기능은 이메일 본문에 Smarty 템플릿을 사용하는 것입니다.
현실로 이메일 작성자 기능에서 Smarty의 필요성은 이메일 본문에 Smarty 템플릿을 사용한다는 것입니다. – Ben
위의 코드는 하나의 파일에서 가져온 것입니까? –
죄송합니다 - 아니요. 두 번째 파일은 전자 메일 기능 (cEmailer.php)을 설정하는 별도의 클래스 파일에 있습니다. setup.php는 index.php 코드에 의해 호출됩니다. cEmailer는 이메일을 보내는 다양한 모듈에 의해 호출됩니다. – Ben