php file_get_contents和文件长度有问题

问题描述

| 我编写了一个简单的api,它将来自一台服务器的数据汇总到另一台服务器。它是一个非常简单的基于ѭ0的api,其中所有数据都作为GET数据附加到url。 所以我得到类似:
http://example.com/api.PHP?param1=afdsa&param2=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)限制,也不会被警告为错误。