0

我编写了一个简单的 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 运行 ubuntu 10.04 lts 和 PHP 版本 5.3.2-1ubuntu4.9

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

解决了

好吧,当您认为您知道问题出在哪里时,您知道它是怎么回事,但事实并非如此?好吧 - 这就是问题所在。我已经重写了我的 API,所以它所要做的就是print_r($_GET);你知道什么 - 它运行良好。所以我开始一一添加,发现堆叠脚本的是一个php邮件函数。为什么?我不知道,也许邮件设置不正确 - 但现在,当我注释掉邮件时 - 一切正常。

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

4

2 回答 2

0

看起来你的 URI 太长了。

相关:不同浏览器中 URL 的最大长度是多少?

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

于 2011-05-26T13:16:37.090 回答
0

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

于 2011-05-26T13:20:59.723 回答