2011-05-26 88 views
0

我写了一个简单的API,将数据从一台服务器集合到另一台服务器。它是一个非常简单的基于$_GET的api,其中所有数据都作为GET数据附加到url。问题php file_get_contents和文件长度

所以我得到的是这样的: 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邮件函数。为什么?我不知道,也许邮件设置不正确 - 但现在,当我评论了邮件 - 所有工作正常。

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

+1

我有一些你可以考虑的事情 - 为什么使用'file_get_contents'如果你需要做的就是“打”一切工作的URL?有cURL,有'header()'.. – 2011-05-26 13:11:45

+0

实际上,如果我将所有网址粘贴到浏览器地址栏,脚本也会堆叠,这不是我称之为的方式,也不是其他方式。该脚本运行,但我得到“PHP通知:未定义的索引:”,它需要很长的时间 – TwoDiv 2011-05-26 13:19:50

+0

嗯,这是PHP邮件的问题,编辑我的帖子 – TwoDiv 2011-05-26 14:04:32

回答

0

看起来你的URI太长了。

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

考虑使用卷曲不发表您的变量api.php

+0

至少尝试阅读,什么是该问题的接受答案。 URL长度不应该限制,450个符号是长度限制的荒谬数字。 – 2011-05-26 13:24:46

0

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