While trying to test the sendmail feature of Zend Server 6.3, on Ubuntu and CentOS, there was a bug. I discovered that utilizing the Mail Preferences area of the Adminitration->Settings page and sending a test email to myself with the Sendmail option ended in an “Unknown error”.
The error returned by Zend Framework 2, which is used by Zend Server 6 was a generic error (Unknown error) if Sendmail returned an error status, but an empty error message. Not much help, or was it?
Since the error appeared to be caused by Sendmail not returning a proper error the search for the issue led there. See where my logic was going? My next step was to test sending an email with the PHP mail() function, and see if that shed any light on the issue. Unfortunately it worked, which meant the issue was elsewhere. But if the error wasn’t with PHP, Apache, Sendmail, Zend Server, or Zend Framework, where could it be?
At this point I enlisted one of my coworkers, Roman Basayev, who nailed it down.
Of course! Zend Server on Linux installs Lighttpd for the Zend Server gui, and there must be a setting there for using Sendmail. Sure enough in the file ‘/usr/local/zend/gui/lighttpd/etc/php-fcgi.ini’ there is a setting for ‘sendmail_path’ and it was empty. So PHP running on Lighttpd was not able to find Sendmail, and therefore was not getting a decent error message.
The fix:
In the file ‘/usr/local/zend/gui/lighttpd/etc/php-fcgi.ini’ update the ‘sendmail_path’ to be ‘/usr/sbin/sendmail -ti’. These are the paths on Ubuntu and CentOS, others may vary.
sendmail_path = "/usr/sbin/sendmail -ti"
After restarting Zend Server, all should be good to go now.