file_get_contents()函数报500 Internal Server Error

前几天,调试网站时发现,同样的代码,在两个不同的服务器上有不同的运行结果:一个运行结果没有任何问题,另外一个却显示599Internal Server Error。
于是,开始各种Debug,绕了一大圈才发现是file_get_contents()函数的问题,由于不同的php版本对其的支持不同。
没问题的php版本是5.4.7,
$jsonData = file_get_contents($url);
直接返回相应的结果

有问题的php版本是5.3.10
在网上搜了一下,碰到类似问题的人很多,推荐的方法是:
$opts = array('http'=>array('header' => "User-Agent:MyAgent/1.0\r\n")); 
$context = stream_context_create($opts); 
$jsonData = file_get_contents($url,false,$context);
唯一不同的是,在请求url之前添加上了一个User-Agent header项,问题便顺利解决
网上给出解决方法的帖子中,也没能指出具体的原因。
现在想来,应该是低版本的php在进行http请求时必须添加http header,这样才符合http标准
而高版本的php则简化了该过程,已经提前配置兼容。

参考链接:
http://stackoverflow.com/questions/22498581/php-file-get-contents-500-internal-server-error-in-php
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: file_get_contents 函数是 PHP 中用于读取文件内容的函数,它可以读取本地文件或远程文件的内容,并将其作为字符串返回。该函数可以用于读取文本文件、HTML 文件、XML 文件、JSON 文件等。同时,该函数还支持设置 HTTP 请求头、超时时间等参数,以满足不同的需求。 ### 回答2: file_get_contents函数是PHP中一个用于读取文件内容的函数,其作用是从指定的文件或者URL中读取数据,返回一个字符串用于处理或者输出。 它的使用十分简单,只需要传入一个文件路径或者URL即可,它会返回读取到的数据。 在读取本地文件时,需要传入文件的完整路径,并且需要确保文件有读取权限。而如果要读取远程文件,则可以直接传入远程URL。读取远程文件需要开启相关的PHP扩展(例如PHP Curl或者allow_url_fopen选项)。 file_get_contents函数可以用来读取各种各样的数据类型,包括文本、HTML、XML、JSON以及图片等二进制文件。在读取二进制文件时,需要将返回的字符串进行解码才能正常使用。除此之外,file_get_contents函数还可以设置一些可选参数,如是否使用SSL、是否缓存等等。 需要注意的是,如果读取文件失败,则file_get_contents函数会返回false。因此,在使用时需要判断返回值是否为false,以避免出现不必要的错误。同时,由于它会将整个文件内容读取到内存中,因此在读取大文件时需要谨慎使用,以避免内存占用过大导致程序崩溃。 总的来说,file_get_contents函数是PHP中一个非常实用的函数,它可以用于读取各种数据类型,并且使用非常方便。同时,需要注意其中的一些细节,以确保程序能够正常运行。 ### 回答3: file_get_contents 是一个 PHP 函数,用于读取指定 URL 或本地文件,返回该文件的内容。 使用该函数需要传入一个参数,可以是一个 URL 或者是本地文件路径。如果传入的是 URL,则该函数会尝试从该 URL 获取文件内容。如果传入的是本地文件路径,则该函数会尝试读取该路径下的文件内容。 该函数返回读取的文件内容作为一个字符串。如果读取失败,则返回 FALSE。 使用 file_get_contents 函数可以方便地读取远程服务器上的文件,从而实现一些远程数据的获取和处理。同时也可以用于读取本地文件的内容,方便地进行文件操作。 在使用 file_get_contents 函数时,需要注意一些安全性问题。由于该函数可以读取远程服务器上的任意文件,因此可能会被攻击者利用进行远程文件包含等攻击。因此,需要谨慎使用该函数,避免安全漏洞的产生。 总之,file_get_contents 可以方便地读取 URL 或本地文件的内容,是一个非常常用的 PHP 函数。但同时需要注意安全性问题,进行谨慎的使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值