【问题标题】:PHP file_get_contents sudden failure on server服务器上的 PHP file_get_contents 突然失败
【发布时间】:2014-04-22 05:25:02
【问题描述】:

我使用 file_get_contents() 从外部 URL 获取信息。它之前在服务器上运行良好。但是现在,不知何故,它无法在服务器上运行。 (代码没有变化。)它一直给我错误:failed to open stream: Connection timed out

我已经在localhost 上对其进行了测试,并且效果很好。我检查了allow_url_fopen选项,它仍然是On

那么,可能是什么原因?

【问题讨论】:

  • 可能是源服务器阻止了您的主机?
  • @SajithNair 感谢您的回复。哦,好吧......那么有什么方法可以检查这是否真的发生了?
  • 你有 ssh 访问你的服务器吗?
  • 另一个原因可能是php.ini 中的超时设置。检查您的php.inidefault_socket_timeout 的值。您也可以通过在您的 php 代码中提供 ini_set('default_socket_timeout', 900); 来覆盖它(以防您的超时时间很低并且您正在尝试访问一个大文件)
  • 好吧,恐怕我没有 ssh 访问权限。而且我刚刚尝试设置超时设置,但无论我使用file_get_contents还是cURL,它都不起作用。我只是尝试访问像Google 这样的其他网站,并且工作正常。所以我猜很有可能是目标站点屏蔽了主机……

标签: php file-get-contents


【解决方案1】:

file_get_contents 在获取远程文件时根本无法正常工作,因此不应使用。它不处理慢速网络连接或重定向,也不返回错误代码。您应该改用 curl 来获取远程文件。

curl_exec 的手册中有一个示例: http://us3.php.net/manual/en/function.curl-exec.php

【讨论】:

  • 你能为此提供任何证据吗?
  • 在另一种情况下,要使用 file_get_content 读取网址,必须将 allow_url_fopen 设置为 on。你检查过吗?在另一种情况下,如果您无权访问托管服务上的 php.ini,您可以使用 php_value allow_url_fopen On 从 .htaccess 文件打开它
  • 抱歉,我已经提到我将allow_url_fopen 设置为On
  • 这些是一些已经在stackoverflow中检查的问题stackoverflow.com/questions/18447827/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-26
  • 1970-01-01
  • 2013-08-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多