环境: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个不同的版本:
ISPConfig允许您select在不同的PHPconfiguration下运行托pipe网站,所以我认为这些多个文件是针对不同的configuration。 但是,即使在更新所有文件并重新启动服务器之后, phpinfo()
仍会显示旧的sendmail_path
。
进一步的诊断:我已经上传了一个简单的PHP脚本 ,使用mail()
函数来发送电子邮件到我的地址。 当从浏览器调用该脚本时,它会失败,并包含错误,但是在shell php /path/to/script/mail.php
运行该脚本会成功发送电子邮件并收到它。
我的问题:
phpinfo()
显示正确的path? mail.php
脚本,即使www-data
(web服务器用户)具有访问权限?