【问题标题】:problems with php file_get_contents and FIle lengthphp file_get_contents 和文件长度的问题
【发布时间】:2011-05-26 13:04:45
【问题描述】:

我编写了一个简单的 api,将数据从一台服务器汇集到另一台服务器。它是一个非常简单的基于 $_GET 的 API,其中所有数据都作为 GET 数据附加到 url。

所以我得到类似的东西: http://example.com/api.php?param1=afdsa&param2=TTTT&....etc.

为了调用它,我使用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邮件函数。为什么?我不知道,也许邮件设置不正确 - 但现在,当我注释掉邮件时 - 一切正常。

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

【问题讨论】:

  • 我有一些你可以考虑的事情 - 如果你需要做的只是“点击” URL 让一切正常工作,为什么还要使用 file_get_contents?有 cURL,有 header()..
  • 实际上,如果我将所有 url 粘贴到浏览器地址栏,脚本也会堆栈,这不是我如何称呼它,而是其他东西。脚本运行,但我收到“PHP 通知:未定义索引:”,这需要很长时间
  • 嗯,是php邮件问题,编辑了我的帖子

标签: php api file-get-contents server-error


【解决方案1】:

您的 URI 看起来太长了。

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

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

【讨论】:

  • 至少尝试阅读该问题的可接受答案。 URL长度不应该被限制,450个符号是长度限制的荒谬数字。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-13
    • 2011-07-09
    • 2011-09-17
    • 1970-01-01
    • 1970-01-01
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多