【问题标题】:How to use php fopen() with a non-standard port?如何将 php fopen() 与非标准端口一起使用?
【发布时间】:2014-07-01 18:53:08
【问题描述】:

我需要我的网站能够使用 fopen() 访问我的文件流服务器上的文件,我们的管理员已将其配置为使用端口 8000。但它出错了,我相信这是因为端口号。 我在 php.ini 中也启用了 allow_url_fopen,所以我认为这不是问题。

Warning: fopen(http://129.237.213.244:8000/mp3/First_8864.mp3) [function.fopen]: 
failed to open stream: Connection refused in _npp_get_mp3() (line 23 of 
/home2/ab83417/public_html/drupal/sites/all/modules/npr_player_pack/npp_library.php).

所以我的问题是:我能否以某种方式告诉网络服务器或我们的流服务器(icecast,顺便说一句)不要如此挑剔,或者我应该使用 curl 之类的其他 php 函数吗?

【问题讨论】:

  • 这似乎是正确的,只是您必须确保在您的php.ini 文件中启用了allow_url_fopen
  • 远程服务器一定是因为某种原因拒绝连接,也许你不能从你的服务器访问129.237.213.244,或者远程服务器拒绝了一些HTTP头。您可以通过您的示例看出,即使 cURL 也无法检索数据。
  • “运行示例” url 已失效

标签: php fopen


【解决方案1】:

您应该确保将allow_url_fopen 设置为1

启动以下脚本:

<?php
error_reporting(E_ALL);
ini_set('display_errors','1');

echo ini_get('allow_url_fopen')."<br />";
$x = file_get_contents('http://129.237.213.244:8000/mp3/First_8864.mp3');

$y = fopen('http://129.237.213.244:8000/mp3/First_8864.mp3',"rb");

它给了我简单的1 并且没有警告。如果您也收到1 但有警告,您应该在其他浏览器中运行脚本并提前更改您的 IP(例如 vpn)。可能是这个网站封禁了你的ip,所以你无法连接到这个网站/url。

【讨论】:

  • 所以你应该尝试从其他IP。很有可能你的ip被封了
  • 是的,我看到了。因此,正如我提到的,您的 IP 可能已被禁止,您应该尝试使用其他 IP。我已经成功地在我的电脑上连接并保存文件为 mp3,我可以简单地打开它并收听
  • 谢谢 Marcin,我会从另一个 IP 尝试,但我认为可能是防火墙阻止了连接。我们的流服务器(托管音频流和 mp3)位于校园网络内,这很可能是罪魁祸首。我将不得不分叉模块并重写代码以不使用 fopen。感谢您的帮助!
  • @DanMantyla 但是您可以毫无问题地使用 fopen。我在这里放了 2 种方法 - file_get_contentsfopen,我可以毫无问题地连接到这个 url
猜你喜欢
  • 2013-06-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-14
相关资源
最近更新 更多