Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mailcatcher:PHP mail()函数返回false_Php_Email_Mailcatcher - Fatal编程技术网

Mailcatcher:PHP mail()函数返回false

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配

我将尝试描述我的问题:

为了在本地环境中调试传出的电子邮件,我安装了mailcatcher(),但在捕获从web发送的邮件时遇到了一些问题。如果我运行只包含一个mail()调用的脚本,一切正常,我可以在mailcatcher 127.0.0.1:1080中看到发送的电子邮件。但当我尝试从web浏览器访问同一脚本时,mail()函数返回false,浏览器中没有显示任何错误,错误日志中没有任何内容。在邮件日志中,我甚至可以看到对mail()函数的调用

我不确定,可能是我的nginx/php fpm配置错误,或者权限有问题

selinux已禁用

如果您知道解决方案,请提供帮助


提前感谢

我在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'