Mailcatcher:PHP mail()函数返回false
我将尝试描述我的问题: 为了在本地环境中调试传出的电子邮件,我安装了mailcatcher(),但在捕获从web发送的邮件时遇到了一些问题。如果我运行只包含一个mail()调用的脚本,一切正常,我可以在mailcatcher 127.0.0.1:1080中看到发送的电子邮件。但当我尝试从web浏览器访问同一脚本时,mail()函数返回false,浏览器中没有显示任何错误,错误日志中没有任何内容。在邮件日志中,我甚至可以看到对mail()函数的调用 我不确定,可能是我的nginx/php fpm配置错误,或者权限有问题 selinux已禁用 如果您知道解决方案,请提供帮助Mailcatcher:PHP mail()函数返回false,php,email,mailcatcher,Php,Email,Mailcatcher,我将尝试描述我的问题: 为了在本地环境中调试传出的电子邮件,我安装了mailcatcher(),但在捕获从web发送的邮件时遇到了一些问题。如果我运行只包含一个mail()调用的脚本,一切正常,我可以在mailcatcher 127.0.0.1:1080中看到发送的电子邮件。但当我尝试从web浏览器访问同一脚本时,mail()函数返回false,浏览器中没有显示任何错误,错误日志中没有任何内容。在邮件日志中,我甚至可以看到对mail()函数的调用 我不确定,可能是我的nginx/php fpm配
提前感谢我在ubuntu 14.04上遇到了同样的问题
/etc/php5/cli/php.ini
和/etc/php5/fpm/php.ini
具有相同的sendmail\u路径
配置,但只有php cli
可以发送电子邮件
对于我的环境,Mailcatcher
在远程服务器上工作,我使用catchmail
命令与它联系
下面是我使用的sendmail\u路径
sendmail_path = /usr/bin/env catchmail --smtp-ip mailcatcher-ip -f address@example.com
对于fpm
php.ini
文件,我必须为邮件函数指定catchmail
的完整路径才能正常工作:
sendmail_path = /usr/bin/env /usr/local/bin/catchmail --smtp-ip mailcatcher -f address@example.com
使用php fpm,它可以与提供的RVM(?)包装器脚本配合使用
在CentOS 7使用PHP-FPM和PHP5.6时,我发现我必须修改
/etc/PHP FPM.d/www.conf
,而不是将ini文件添加到/etc/PHP.d
或修改/etc/PHP.ini
。这也需要@Alexis N-o的答案中的完整路径
php_admin_value[sendmail_path] = '/usr/bin/env GEM_PATH=/usr/share/gems:/usr/local/share/gems:/usr/share/rubygems:$HOME/.gem/ruby /usr/local/bin/catchmail --smtp-ip 127.0.0.1 --smtp-port 1025 -f mailcatcher@example.com'
更新:最近,我发现在某些环境中以apache的形式运行php fpm时,GEM_PATH是nil。无论我尝试了什么(/etc/gemrc),我都只能将
GEM_PATH
作为此命令的一部分注入。如果您使用Mac OS Sierra或更高版本:下面是catchmail的正确位置: 更改
sendmail\u路径=/usr/bin/env catchmail-fcatcher@mailcatcher.me
通过
sendmail\u path=/usr/local/bin/catchmail-fsomeone@domain.com
如何手动运行测试脚本?命令行?请注意,PHP通常有两个.ini文件:命令行+嵌入的web服务器。如果您在CLI.ini文件中配置了mailcatcher,那么当您通过web服务器(SAPI模式)运行时,它将无法工作。我写道,我在命令行中以两种方式运行,它可以工作,但在web上不工作。对于php.ini,一切都很好,至少phpinfo()调用可以为这两种情况提供以下信息:sendmail_path/usr/bin/env catchmailI遇到了完全相同的问题。您找到解决方案了吗?您是否更改了某些权限,因为即使使用完整路径,PHP-FPM仍然无法运行catchmail!当我们的托管公司将PHP从5.3.3更新到5.4.40时,“/usr/bin/env/usr/local/bin/catchmail”不再有效。包装器解决方案修复了它。
php_admin_value[sendmail_path] = '/usr/bin/env GEM_PATH=/usr/share/gems:/usr/local/share/gems:/usr/share/rubygems:$HOME/.gem/ruby /usr/local/bin/catchmail --smtp-ip 127.0.0.1 --smtp-port 1025 -f mailcatcher@example.com'