php无法正常发送邮件
2015-06-08 22:26
691 查看
今天在调试网站的时候,发现用户找回密码的功能,不能正常的发送新密码到用户的注册邮箱。
但是,相同的代码在本地调试环境中就是正常的,在远程服务器上就是不行。
最后定位出来的问题是:
空间服务商,在php.ini中默认把PHP函数fsockopen给禁用了,启动之后,就可以正常运行发送邮件的功能。
我用的是email.class.php类文件。
可以定位到这段代码中需要fsockopen函数,但是缺加了@屏蔽其错误提示,所以导致没有看到明显的错误提示。
问题解决的一些感悟,需要看看调用的其他类中是否用到了某些系统函数,但是却被空间商默认给关闭的?
但是,相同的代码在本地调试环境中就是正常的,在远程服务器上就是不行。
最后定位出来的问题是:
空间服务商,在php.ini中默认把PHP函数fsockopen给禁用了,启动之后,就可以正常运行发送邮件的功能。
我用的是email.class.php类文件。
function smtp_sockopen_relay() { <span style="white-space:pre"> </span>$this->log_write("Trying to ".$this->relay_host.":".$this->smtp_port."\n"); <span style="white-space:pre"> </span>$this->sock = @fsockopen($this->relay_host, $this->smtp_port, $errno, $errstr, $this->time_out); <span style="white-space:pre"> </span>if (!($this->sock && $this->smtp_ok())) { <span style="white-space:pre"> </span>$this->log_write("Error: Cannot connenct to relay host ".$this->relay_host."\n"); <span style="white-space:pre"> </span>$this->log_write("Error: ".$errstr." (".$errno.")\n"); <span style="white-space:pre"> </span>return FALSE; }
可以定位到这段代码中需要fsockopen函数,但是缺加了@屏蔽其错误提示,所以导致没有看到明显的错误提示。
问题解决的一些感悟,需要看看调用的其他类中是否用到了某些系统函数,但是却被空间商默认给关闭的?
相关文章推荐
- php扩展开发笔记(3)类的静态数组属性定义
- Yii2的YiiBase自动加载类、引用文件(autoload)
- PHP设计模式——迭代器模式
- PHP开发使用xampp搭建本地开发环境
- Yii2设置别名函数(setAlias)和获取别名函数(getAlias)
- 初学PHP
- PHP中过滤常用标签的正则表达式
- phpmailer使用教程及实例演示
- FTP文件上传与下载
- PHP FastCGI RCE Vul
- OutputCache说明
- SecureCRTPortable.exe 如何上传文件
- pscp FTP拷贝命令
- 挖洞姿势:特殊的上传技巧,绕过PHP图片转换实现远程代码执行(RCE)
- PHP mb_convert_encoding 问题记录
- PHP的xml操作类
- PHP获取字符串中英文混合长度
- (转)ThinkPHP自定义标签
- Yii获取当前url和域名
- 禅道附件大小的限制、PHP上传文件大小限制