We just moved from development server to live server and are having issues with email settings, we get the following error when trying to send an email:

Fatal error: Call to protected method CI_Email::_str_to_array() from context 'Tools_communicate' in .../system/expressionengine/controllers/cp/tools_communicate.php on line 627

Any ideas as to why this would be?


  • I get that same error while troubleshooting PostmarkEE e-mail problems after upgrading from EE 2.5.2 to 2.7.1, but I’ve never used the Communicate section before, so not sure if it ever worked. Oct 10, 2013 at 21:11
  • I tested on the 2.5.2 environment and got an error I think from Postmark that said the sender signature was not defined. I tried again with from address set to the address a sender sig is defined in our Postmark account, and then it worked. So I tried same e-mail on 2.7.1 and no longer got your error, but instead got the same error I am stuck on: Fatal error: Cannot access protected property EE_Email::$_recipients in [...]/third_party/postmark_system_emails/ext.postmark_system_emails.php on line 147 Oct 10, 2013 at 21:23

1 Answer 1


While I don't know exactly what would be causing the error, I can give you something to check.

Assuming your running the exact same version of EE and all addons etc, the prime suspect for me would be the PHP modules on the live server being different from production. Just pull up phpinfo on development and live servers (you can get to it from Tools > Utilities > PHP Info.

YOu shouldn't need to go through the whole config, just check the compile commands on each box, look for any that are missing on the development server to the live server and that should give you a hint.

If this doesn't look to be it, best you provide a bit more info on your setup, so version of EE, any email related addons your running if any, in particular any that affect email handling like Escort etc. This will help anyone else that swings by home in on the issue.

  • Thanks for this, we ended up using SMTP for emails on the live server in the end, but this did show that different PHP modules were being ran.
    – Nick
    Oct 16, 2013 at 7:14
  • That's good you got a resolution. One handy tip that I do for all our sites. When they launch or have any significant changes, I make a copy of the PHP modules/config at time of testing. So if I ever have to troubleshoot when there have been migrations or php upgrades etc I have a point of reference to what it was when it worked.
    – neekster
    Oct 16, 2013 at 10:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.