Php 文件\u获取\u内容和卷曲不工作,tcp端口阻塞问题

Php 文件\u获取\u内容和卷曲不工作,tcp端口阻塞问题,php,json,firewall,file-get-contents,Php,Json,Firewall,File Get Contents,我正在尝试编写一个joomla模块,它将解析来自SpringerAPI的json数据。我对方法文件\u get\u内容和其他替换有问题。我的问题是: 警告:文件\u获取\u contentshttp://www.example.com [function.file get contents]:无法打开流:试图对无法访问的网络执行套接字操作。在C:\wamp\www\modules\mod\u springer\mod\u springer.php的第72行 经过一些搜索,我发现这可能是因为我公司

我正在尝试编写一个joomla模块,它将解析来自SpringerAPI的json数据。我对方法文件\u get\u内容和其他替换有问题。我的问题是:

警告:文件\u获取\u contentshttp://www.example.com [function.file get contents]:无法打开流:试图对无法访问的网络执行套接字操作。在C:\wamp\www\modules\mod\u springer\mod\u springer.php的第72行

经过一些搜索,我发现这可能是因为我公司的防火墙。有没有办法克服这个问题,比如使用或使用其他方法更改端口im,或者我被困在这里

注意:已启用允许url打开。我在用wamp

提前感谢,


Ismail

如果你能说服权力允许你通过防火墙访问你想要连接的远程API,你就不会被困住。只要你有合法的理由,并且防火墙访问可以在一个狭窄的范围内(一个特定的IP和端口)设置,我不明白为什么你在获取此访问时会遇到问题。

如果你能说服权力允许你通过防火墙访问你希望连接的远程API,你就不会被卡住。只要您有合法的理由,并且防火墙访问可以在一个狭窄的范围内(一个特定的IP和端口)设置,我不明白为什么您在获取此访问时会遇到问题。

也许可以通过CULLS代理处理来克服此问题,例如:

curl_setopt($ch, CURLOPT_PROXY, "http://xxx.xxx.xxx.xxx:8080");
curl_setopt($ch, CURLOPT_PROXYPORT, 8080);
curl_setopt ($ch, CURLOPT_PROXYUSERPWD, "xxx:xxx"); 
这将取决于一些事情,如您拥有的权限,如果它只是一个被阻止的端口,或者是访问控制


我希望这对您有所帮助,祝您好运

也许可以解决卷发代理处理的问题,例如:

curl_setopt($ch, CURLOPT_PROXY, "http://xxx.xxx.xxx.xxx:8080");
curl_setopt($ch, CURLOPT_PROXYPORT, 8080);
curl_setopt ($ch, CURLOPT_PROXYUSERPWD, "xxx:xxx"); 
这将取决于一些事情,如您拥有的权限,如果它只是一个被阻止的端口,或者是访问控制

我希望这对你有帮助,祝你好运

从下载cacert.pem文件 将cacert.pem文件复制到例如c:/wamp/bin/php/extras/ssl文件夹中 在php.pni curl.cainfo=c:/wamp/bin/php/extras/ssl/cacert.pem中写入或取消注释并保存 重新启动Wamp/Xampp服务器 完成 从下载cacert.pem文件 将cacert.pem文件复制到例如c:/wamp/bin/php/extras/ssl文件夹中 在php.pni curl.cainfo=c:/wamp/bin/php/extras/ssl/cacert.pem中写入或取消注释并保存 重新启动Wamp/Xampp服务器 完成

您是否使用代理连接到Internet?您是否真的像警告中所说的那样使用xxx.com或api.springer.com?如果你使用了前者,那么这个网站很可能被你的公司列入黑名单^^@Gedrox no,我没有使用proxy@jurgen no,我使用api.springer.com和它们提供的密钥:如果您能够在浏览器中打开地址,那么您也应该能够通过传递浏览器发送的相同请求头来与PHP连接。@gedrox:不相关。服务器与运行浏览器的机器不同。在家里说我的门没有锁与工作中的门的状态无关。你是否使用代理连接到互联网?你是否真的像警告所说的那样使用xxx.com或api.springer.com?如果你使用了前者,那么这个网站很可能被你的公司列入黑名单^^@Gedrox no,我没有使用proxy@jurgen no,我使用api.springer.com和它们提供的密钥:如果您能够在浏览器中打开地址,那么您也应该能够通过传递浏览器发送的相同请求头来与PHP连接。@gedrox:不相关。服务器与运行浏览器的机器不同。说我的门在家里没有锁与工作中的门的状态无关。他们说他们无法解锁端口25,但如果我有机会用任何其他端口解决这个问题,我想他们不会那么严格。我是否使文件内容与其他端口一起工作?@Ismail:只需将端口放入url:http://example.com:XXX/... 其中XXX是端口号。端口25不应用于HTTP请求…应用于SMTP。你确定你说的对吗?@Ismail AJ是100%对的,HTTP请求通常通过端口80或作为替代端口8080。你为什么还要使用端口25?@Marc$arr=json\u decodefile\u get\u contents$json\u feed\u url,对;var_dump$arr;这也不起作用。他们说他们无法解锁端口25,但如果我有机会用任何其他端口解决这个问题,我想他们不会那么严格。我是否使文件内容与其他端口一起工作?@Ismail:只需将端口放入url:http://example.com:XXX/... 其中XXX是端口号。端口25不应用于HTTP请求…应用于SMTP。你确定你说的对吗?@Ismail AJ是100%对的,HTTP请求通常通过端口80或作为替代端口8080。你为什么还要使用端口25?@Marc$arr=json\u decodefile\u get\u contents$json\u feed\u url,对;var_dump$arr;这也不行。谢谢你的努力
但仍然不起作用,响应为false。我没有直接使用端口25,事实上我没有在代码中指出任何端口。IT人员说我可以用80或8080。下面的代码仍然不起作用。有什么建议吗$json_feed_url='1http://api.springer.com:80/metadata/json?q=avionics&api_key=xxxxxxxxxxxxxxxx'; $ch=旋度_init;curl_setopt$ch,CURLOPT_头,false;curl_setopt$ch,CURLOPT_PROXY,$json_feed_url;curl_setopt$ch,CURLOPT_PROXYPORT,80;curl_setopt$ch,CURLOPT_PROXYUSERPWD,xxx:xxx;curl_setopt$ch,CURLOPT_RETURNTRANSFER,true$json=curl_exec$ch;curl_close$ch$arr=json_decode$json;var_dump$arr;您是否尝试过从$json\u feed\u URL中的URL字符串中删除端口规范?您可能还想尝试使用curl的0和1值,而不是true和false,我不是100%确定为什么,但我有时发现这对meSo有效,您可以使用哪些端口?感谢您的努力,但仍然不起作用,响应为false。我没有直接使用端口25,事实上我没有在代码中指出任何端口。IT人员说我可以用80或8080。下面的代码仍然不起作用。有什么建议吗$json_feed_url='1http://api.springer.com:80/metadata/json?q=avionics&api_key=xxxxxxxxxxxxxxxx'; $ch=旋度_init;curl_setopt$ch,CURLOPT_头,false;curl_setopt$ch,CURLOPT_PROXY,$json_feed_url;curl_setopt$ch,CURLOPT_PROXYPORT,80;curl_setopt$ch,CURLOPT_PROXYUSERPWD,xxx:xxx;curl_setopt$ch,CURLOPT_RETURNTRANSFER,true$json=curl_exec$ch;curl_close$ch$arr=json_decode$json;var_dump$arr;您是否尝试过从$json\u feed\u URL中的URL字符串中删除端口规范?您可能还想尝试使用curl的0和1值,而不是true和false,我不能100%确定原因,但有时我发现这对meSo有效,您可以使用哪些端口?