뉴스레터를 운영하기 위해 여러 설정하던 중 만난 php 에러 Call to undefined function get_magic_quotes_runtime() 에러 문제 해결 방법에 대해서 살펴봅니다.
뉴스레터 운영을 위해서 메일스터라는 뉴스레터 플러그인을 사용하고 있습니다. 그런데 자동으로 메일 보내기가 자꾸 작동이 안되는 문제가 있여 몇주동안 문제 해결을 위해서 고민에 고민을 거듭했습니다.
이메일 마케팅에서 특정 상황, 예를들어 신규 회원이 가입하면 자동으로 환영 메일을 보내는 것과 같은 자동화된 동작을 하도록 설계하곤 합니다. 그래야 효율적이고 효과적인 마케팅이 가능하기 때문이죠.
문제는 수동으로 메일을 보내면 잘 가는데 자동으로 메일 보내기가 작동이 안되었습니다. 보아하니 특정 상황 발생 시 트리거를 격발시키기 위해서 크론 명령을 주는데 이 크론 동작이 제대로 작동하지 않아 메일이 자동으로 보내지지 않는 것이었습니다.
그 원인을 파악하고자 log도 살펴보고 이런 저런 실험을 하다가 php 명령를 내리면 이상한 메세지를 보여주는 것을 발견했습니다.
PHP Fatal error: Uncaught Error: Call to undefined function get_magic_quotes_runtime() 라는 에러 메세지인데요.
PHP Fatal error: Uncaught Error: Call to undefined function get_magic_quotes_runtime() in /html/mysite/wp-content/plugins/mailster/classes/libs/phpmailer/class.phpmailer.php:2697
Stack trace:
#0 /html/mysite/wp-content/plugins/mailster/classes/libs/phpmailer/class.phpmailer.php(2668): PHPMailer_mailster->encodeFile()
#1 /html/mysite/wp-content/plugins/mailster/classes/libs/phpmailer/class.phpmailer.php(2300): PHPMailer_mailster->attachAll()
#2 /html/mysite/wp-content/plugins/mailster/classes/libs/phpmailer/class.phpmailer.php(1277): PHPMailer_mailster->createBody()
#3 /html/mysite/wp-content/plugins/mailster/classes/mail.helper.class.php(115): PHPMailer_mailster->preSend()
#4 /html/mysite/wp-content/plugins/mailster-amazonses/classes/amazonses.class.php(142): mailster_mail_helper->PreSend()
#5 /html/mysite/wp-includes/class-wp-hook.php(287): MailsterAmazonSES->dosend()
#6 /html/mysite/wp-includes/class-wp-hook.php(311): WP_Hook->apply_filters()
#7 /html/mysite/wp-includes/plugin.php(484): WP_Hook->do_action()
#8 /html/mysite/wp-content/plugins/mailster/classes/mail.class.php(583): do_action()
#9 /html/mysite/wp-content/plugins/mailster/classes/campaigns.class.php(4306): MailsterMail->send()
#10 /html/mysite/wp-content/plugins/mailster/classes/queue.class.php(1178): MailsterCampaigns->send()
#11 /html/mysite/wp-includes/class-wp-hook.php(287): MailsterQueue->progress()
#12 /html/mysite/wp-includes/class-wp-hook.php(311): WP_Hook->apply_filters()
#13 /html/mysite/wp-includes/plugin.php(551): WP_Hook->do_action()
#14 /html/mysite/wp-cron.php(138): do_action_ref_array()
#15 {main}
thrown in /html/mysite/wp-content/plugins/mailster/classes/libs/phpmailer/class.phpmailer.php on line 2697
Code language: PHP (php)
엄청난 구글링 결과 “get_magic_quotes_runtime()”, “set_magic_quotes_runtime()”과 같은 phpMailer에서 사용하는 기능은 php 5에서 사용하던 기능으로 php 7이상에서는 사용하지 않는 기능이라고 합니다. 그러니 php 7.4에서 계속 에러를 냈던 것 같습니다.
그러면 이문제를 어떻게 해결해야 할까요? 아마 플러그인 개발자는 php 5,php 7, php 8 모두에서 플러그인 작동해야 하므로 이 기능 명령을 아직도 사용하는지도 모르겠습니다. 이 mailster 플러그인 기술 지원 기간이 끝났기 때문에 구글링을 거듭해서 해결 방법을 찾았습니다.
결국 위대한 구글신께서 정답을 알고 있더군요. stackoverflow에서 이에 대한 질문이 올라왔고 해결 방법도 제시되어 있엇습니다.
Call to undefined function set_magic_quotes_runtime()
해결 방법은 php 7에서 이러한 기능 요청을 받으면 더미 기능을 하도록 만들어서 이 이슈를 회피할 수 있다고 합니다. 저도 적용해 보니 작동하더군요. 저는 functions.php 파일에 다음의 코드를 추가했습니다.
if (!function_exists('set_magic_quotes_runtime')) {
function set_magic_quotes_runtime($new_setting) {
return true;
}
}
Code language: PHP (php)
참고하시길 바래요..
전 이 문제 해결하느라 3주나 걸렸습니다. 틈틈히 테스트하느라 긴 시간이 걸렸지요.
새롭게 뉴스레터를 시작했습니다.
1️⃣ 주식 등 투자 정보 : 기업 분석, IB 투자의견 등 투자 관련 내용
..... 테슬라 실적 및 IB들의의 테슬라 투자의견
2️⃣ 사례 및 트렌드 : 사례연구와 트렌드 관련 괜찮은 내용
.....유튜브와 경쟁대신 구독 전환한 비디오 플래폼 비메오 사례