我编写了一个简单的api,可以将数据从一台服务器汇集到另一台服务器。它是一个非常简单的基于$_GET
的api,其中所有数据都作为GET数据附加到url。
所以我得到了这样的东西:http://example.com/api.php?param1=afdsa¶m2=TTTT&....
等
为了称之为file_get_contents($url);
首先,我真的不需要回复的内容。我只需要"触摸"网址,这样它就会生效。
我的主机(共享,justhost)有问题,我已经转到了VPS。我的api调用开始超时,当我检查apacheerror.log时,我看到:
"failed to open stream: File name too long in ..."
事实上,$url
字符串大约有450个字符。
问题是,我在哪里更改文件长度的设置。它与硬盘文件系统不同,因为我自己的计算机可以获得相同的字符串,没有问题,也没有错误。此外,共享主机对该url没有任何问题。
VPS使用PHP版本5.3.2-1ubuntu4.9 运行ubuntu 10.04 lts
感谢任何帮助,已经坐了两天了
已解决
好吧,你知道当你认为你知道问题在哪里,但事实并非如此时是怎么回事吗?那就是问题所在。我已经重写了我的API,所以它所能做的就是print_r($_GET);
,你知道吗?它工作得很好。因此,我开始一行接一行地添加,并发现堆叠脚本的是php邮件函数。为什么?我不知道,也许邮件设置不正确——但现在,当我评论完邮件后,一切都很好。
它仍然不能解释我的"文件到长"错误,但没关系。感谢所有
看起来你的URI太长了。
相关:在不同的浏览器中,URL的最大长度是多少?
考虑使用CURL将变量POST到api.php
您的问题不在file_get_contents
,而是在fopen
或其他试图创建文件的函数中。它可以是缓存系统-不能说没有代码。换句话说,问题不在于url的长度,而在于文件名的长度failed to open stream
-它是来自文件处理程序的错误消息
URL的长度不受限制,即使受到服务器(例如apache)的限制,也不会被警告为错误。