【问题标题】:imagefill() causing 'Premature end of script headers'imagefill() 导致“脚本头过早结束”
【发布时间】:2014-02-20 09:37:53
【问题描述】:

我发帖是因为经过数小时的搜索,我完全感到困惑。这是交易。我的 Laravel 应用程序使用 PHP Image Workshop 包。一切似乎都运行良好,除非我尝试进行resizeInPixel() 调用或cropInPixel() 调用(或类似调用),服务器会引发内部服务器错误。如果我调查错误日志,我会看到:

Premature end of script headers: index.php

在我使用调整大小和裁剪相关方法(即图像处理)时发生。我可以initFromPath() 没有问题,我可以使用save() 方法没有问题。只有图像处理方法会导致内部服务器错误。

我也在网上看到这可能是suphp_log 文件超过 2GB 的结果。我已经追踪并清理了该文件,但无济于事。

欢迎提出任何想法!即使他们只是一般的“你尝试过......”。

更新

我已将范围缩小到 Image Workshop 代码中的特定行。此行导致错误:

 imagefill($image, 0, 0, $color);

此外,此错误仅在使用 imagecolorallocatealpha 创建颜色时发生,而不是在仅使用 imagecolorallocate 创建颜色时发生。

【问题讨论】:

    标签: php laravel laravel-3


    【解决方案1】:

    Liquidweb.com 提供了一些解决此问题的重要提示。我的钱在#2(见粗体字),因为你在进行图像处理时遇到了错误:

    有时在执行脚本时,您会看到类似于以下内容的错误:

    Premature end of script headers: /home/directory/public_html/index.php

    发生此错误是因为服务器需要一组完整的 HTTP 标头(一个或多个后跟一个空行),但它没有得到它们。这可能是由几个原因造成的:

    1. 升级或降级到不同版本的 PHP 可能会在 httpd.conf 中留下剩余选项。在命令行上使用 php -v 检查 PHP 的当前版本,并在 httpd.conf 中搜索任何提及另一个版本的行。如果找到它们,请将它们注释掉,提取 httpd.conf 并重新启动 apache。

    2. 如果脚本由于资源限制而被终止,httpd.conf 中的 RLimitCPU 和 RLimitMEM 指令也可能导致错误。

    3. suEXEC、mod_perl 或其他第三方模块中的配置问题通常会干扰脚本的执行并导致错误。如果是这些原因,将在 apache error_log 中找到与具体情况相关的其他信息。

    4. 如果 suphp 的日志大小达到 2GB 或更大,您可能会看到脚本标题过早结束错误。查看日志包含的内容并将其 gzip 或 null 。重新启动 apache,然后处理 suphp 日志发现的任何问题。 suphp 日志位于:/usr/local/apache/logs/suphp_log

    5. 脚本的权限也可能导致此错误。 CGI 脚本只能访问 httpd.conf 中指定的用户和组所允许的资源。在这种情况下,错误可能只是指出未经授权的用户正在尝试访问脚本。

    更新:


    在cmets中了解了更多信息后,我仍然觉得这是一个与内存有关的事情。

    根据这个 SO wiki:About gdlib

    警告:图像函数非常占用内存。请务必将 memory_limit 设置得足够高

    你的 PHP memory_limit 是多少?你能把它调高一点吗?

    【讨论】:

    • 感谢您的评论!我在 httpd.conf 中没有找到 RLimitMEM 或 RLimitCPU。有任何想法吗?作为旁注,我已经尝试显着增加网站上脚本的内存限制(通过 php.ini),但这并没有影响错误。
    • 这是您自己的服务器吗?还是共享主机?另外,apache error_log 中发生了什么?有没有相关的细节?
    • 它是专用主机。 apache 错误日志是显示“脚本头过早结束”的日志,因此不幸的是它并不能说明情况。
    • 我仍然觉得这是一个记忆的东西。我已添加到我的答案中。
    • 伙计,这很奇怪。抱歉,我无法为您找到答案。如果你真的弄明白了,请回来告诉我们。
    猜你喜欢
    • 2012-09-23
    • 1970-01-01
    • 1970-01-01
    • 2011-11-01
    • 2012-06-25
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    相关资源
    最近更新 更多