<?php $fp = @fsockopen("tcp://notify.alipay.com", 80, $errno, $errstr, 30); if (!$fp) { echo "$errstr ($errno)<br />\n"; } ?>
上面这段代码我在服务器上直接以脚本的方式的执行php test.php命令是可以访问请求到支付宝的接口的,但是我通过web请求的方式却不能请求到支付宝的服务器,并且报如下错误:
php_network_getaddresses: getaddrinfo failed: Name or service not known (0)
网上查了下,并且根据自己的理解也认为是dns解析的问题,我在服务器的host文件中绑定该地址,就可以成功访问了。但是如果真是dns解析问题的话我在服务器上直接以脚本的方式执行应该也是无法访问并会报错的,诡异吗?你觉得,想不通。到底是自己本身服务器的问题还是支付宝那边的问题?
晕死我看了这篇文章 http://stackoverflow.com/questions/7230719/nginx-and-php-cgi-cant-file-get-contents-of-any-website-on-the-server中的这个回答受到了点提示
CheckthatyournotrunningintoworkerdepletiononthePHPsideofthings,thiswastheissueonmylabserversetupwhichwasconfiguredtosaveRAM.BasicallyIforgotthatyourusingasingleworkertoprocessthemainpagebeendisplayedtotheend-user,thentheget_file_contents()functionisbasicallygeneratingaseparateHTTPrequesttothesamewebserver,effectivelyrequiring2workersforasinglepageload.Asthefirstpagewasusingthelastworkertherewasnoneavaliablefortheget_file_contentsfunction,thereforeNginxeventuallyrepliedwitha504onthefirstpagebecausetherewasnoreplyonthereverseproxyrequest我重启了PHP已经解决了。之前网站其他的访问都正常,根本没想到去重启PHP但是具体原因还是不太清楚,因为之前我在hosts文件直接绑定域名是可以访问的换成非root用户执行phptest.php呢?版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。