PHP的sendmail_path没有得到更新

环境:Debian 7; PHP 5.4.39; Apache 2.2; ISPConfig

使用Howtoforge的Perfect Server Debian指南,我构build了一个Web服务器来为一些PHP应用程序提供服务。 我的意图是使用php mail()函数使用外部SMTP服务器。 我已经卸载后缀,安装MSMTP更新我的php.ini文件中的sendmail_path

我也确认了MSMTP设置的工作。 在更新我的php.ini文件并重新启动服务器后, phpinfo()仍然显示旧的sendmail_path /usr/sbin/sendmail -t -i -fwebmaster@$domain.com而不是我自定义的MSMTPpath"/usr/bin/msmtp -C /etc/msmtprc --logfile /var/log/msmtp.log -a $domain -t"

phpinfo() ,加载的configuration文件是/etc/php5/cgi/php.ini 。 但是,当我运行php -i | grep Configuration php -i | grep Configuration在shell php -i | grep Configuration ,我得到Loaded Configuration File => /etc/php5/cli/php.ini (注意path的差异?)。

尽pipe如此,我开始更新这两个文件的path,包括所有其他的文件。 他们在这些地方大约有4个不同的版本:

  • /etc/php5/apache2/php.ini
  • /etc/php5/cgi/php.ini
  • /etc/php5/cli/php.ini
  • /etc/php5/fpm/php.ini

ISPConfig允许您select在不同的PHPconfiguration下运行托pipe网站,所以我认为这些多个文件是针对不同的configuration。 但是,即使在更新所有文件并重新启动服务器之后, phpinfo()仍会显示旧的sendmail_path

进一步的诊断:我已经上传了一个简单的PHP脚本 ,使用mail()函数来发送电子邮件到我的地址。 当从浏览器调用该脚本时,它会失败,并包含错误,但是在shell php /path/to/script/mail.php运行该脚本会成功发送电子邮件并收到它。

我的问题:

  • 我怎样才能在这个服务器上的PHP脚本使用MSMTP中继邮件?
  • 我怎样才能让phpinfo()显示正确的path?
  • 为什么我能够在shell中而不是通过浏览器执行mail.php脚本,即使www-data (web服务器用户)具有访问权限?