我写了一个简单的api,它将数据从一台服务器汇集到另一台服务器。它是一个非常简单的基于$_GET
的api,其中所有数据都作为GET数据附加到URL。
所以我得到类似的东西:
http://example.com/api.php?param1=afdsa¶m2=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邮件功能。为什么?我不知道,也许邮件设置不正确 - 但现在,当我注释掉邮件时 - 一切正常。
它仍然没有解释我的“文件长”错误,但没关系。谢谢大家
答案 0 :(得分:0)
答案 1 :(得分:0)
您的问题不在file_get_contents
中,而是在fopen
或其他尝试创建文件的函数中。它可以是缓存系统 - 不能没有代码。
换句话说,问题不在于url的长度 - 仅在文件名的长度上
failed to open stream
- 来自文件处理程序的错误消息
URL的长度不受限制,即使受到服务器(例如apache)的限制,也不会将其警告为错误。