fsockopen('smtp.163.com', 25, '', '', 10);
本地运行的时候是好的,可以发送邮件,放到线上就返回了false,没有任何报错,不知道原因在哪!
有没有什么方法可以知道FSOCKOPEN返回false的原因,本人不是拿来主义,只要给个可能会出现的情况就行
fsockopen('smtp.163.com', 25, '', '', 10);
本地运行的时候是好的,可以发送邮件,放到线上就返回了false,没有任何报错,不知道原因在哪!
有没有什么方法可以知道FSOCKOPEN返回false的原因,本人不是拿来主义,只要给个可能会出现的情况就行
$handler = fsockopen('smtp.163.com', 26, $errcode, $errmsg, 10);
var_dump($errcode, $errmsg, $handler);
pfsockopen — 打开一个持久的网络连接或者Unix套接字连接。
resource fsockopen ( string $hostname [, int $port = -1 [, int &$errno [, string &$errstr [, float $timeout = ini_get("default_socket_timeout") ]]]] )
从文档中可以看出, int &$errno
和 string &$errstr
是引用类型, 不能直接赋值。
在 PHP 5.6 / PHP 7.1.16 (cli) 执行结果如下
Fatal error: Only variables can be passed by reference in xxx.php on line 2
修改后代码如下
<?php
$res = fsockopen('smtp.163.com', 25, $errno, $errmsg, 10);
var_dump($errno, $errmsg);
1 回答4.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答2.3k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答2.2k 阅读
1 回答675 阅读✓ 已解决
2 回答603 阅读✓ 已解决
一般是关闭了25端口的,需要问下你的服务商是否开启了25端口