php file_get_contents和FIle长度的问题

时间:2011-05-26 13:04:45

标签: php api file-get-contents server-error

我写了一个简单的api,它将数据从一台服务器汇集到另一台服务器。它是一个非常简单的基于$_GET的api,其中所有数据都作为GET数据附加到URL。

所以我得到类似的东西: http://example.com/api.php?param1=afdsa&param2=TTTT&....

为了调用它,我使用file_get_contents($url); 首先 - 我真的不需要回复的内容。我只需要“触摸”这个网址就可以开始行动了。

我的托管(共享,justhost)出现问题,我已经开始使用VPS了。 我已经开始对我的api调用超时了,当我检查了apache error.log时,我看到了:

"failed to open stream: File name too long in ..."

确实 - $url字符串大约有450个字符。

问题是 - 我在哪里更改文件长度的设置。它与硬盘驱动器文件系统不同,因为我自己的计算机获得相同的字符串没有问题且没有错误。 此外 - 共享主机与该网址没有任何问题。

VPS使用PHP Version 5.3.2-1ubuntu4.9运行ubuntu 10.04 lts

感谢任何帮助,已经坐了两天

解决

嗯,你知道当你认为你知道问题在哪里但它不是吗?好吧 - 这就是问题所在。 我已经重写了我的API所以它只会print_r($_GET);,你知道什么 - 它工作得很好。 所以我开始逐个添加这些行,并发现堆叠脚本的是一个php邮件功能。为什么?我不知道,也许邮件设置不正确 - 但现在,当我注释掉邮件时 - 一切正常。

它仍然没有解释我的“文件长”错误,但没关系。谢谢大家

2 个答案:

答案 0 :(得分:0)

看起来您的URI太长了。

相关:What is the maximum length of a URL in different browsers?

考虑使用CURL将变量发布到api.php

答案 1 :(得分:0)

您的问题不在file_get_contents中,而是在fopen或其他尝试创建文件的函数中。它可以是缓存系统 - 不能没有代码。 换句话说,问题不在于url的长度 - 仅在文件名的长度上 failed to open stream - 来自文件处理程序的错误消息 URL的长度不受限制,即使受到服务器(例如apache)的限制,也不会将其警告为错误。