问题描述
|
我编写了一个简单的api,它将来自一台服务器的数据汇总到另一台服务器。它是一个非常简单的基于ѭ0的api,其中所有数据都作为GET数据附加到url。
所以我得到类似:
http://example.com/api.PHP?param1=afdsa¶m2=TTTT&....
等
为了称呼我用file_get_contents($url);
首先-我真的不需要回复的内容。我只需要“触摸” URL,即可开始执行。
我在托管(共享,justhost)方面遇到了问题,并且已经迁移到VPS。
我开始在api调用上超时,当我检查了apache error.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,因此只需5英镑,您知道什么,它可以正常工作。
因此,我开始逐行添加行,并发现堆积脚本的是PHP邮件功能。为什么?我不知道,也许邮件设置不正确-但是现在,当我注释掉邮件时-一切正常。
它仍然不能解释我的“文件长文件”错误,但没关系。谢谢大家
解决方法
您的URI似乎太长。
相关:不同浏览器中URL的最大长度是多少?
考虑使用CURL将变量发布到
api.php
,您的问题不在file_get_contents
中,而是在fopen
或其他试图创建文件的功能中。它可以是缓存系统-没有代码就不能说。
换句话说,问题不在于URL的长度,而在于文件名的长度。
failed to open stream
-来自文件处理程序的错误消息。
URL的长度不受限制,即使受服务器(例如apache)限制,也不会被警告为错误。