我发帖是因为经过几个小时的搜索后我完全感到困惑。这是交易。我的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
创建颜色时。
答案 0 :(得分:0)
在Liquidweb.com解决此问题有一些很好的提示。我的钱在#2上(见粗体文字)因为你在进行图像处理时遇到了错误:
有时,在执行脚本时,您会看到类似于以下内容的错误:
Premature end of script headers: /home/directory/public_html/index.php
发生此错误是因为服务器需要一组完整的HTTP标头(一个或多个后跟一个空行),并且它不会获取它们。这可能是由以下几点引起的:
升级或降级到不同版本的PHP可以在httpd.conf中留下剩余选项。在命令行中使用php -v检查当前版本的PHP,并在httpd.conf中搜索提及另一个版本的任何行。如果找到它们,请将它们注释掉,提取httpd.conf并重新启动apache。
如果脚本因资源限制而被终止,httpd.conf中的RLimitCPU和RLimitMEM指令也可能导致错误。
suEXEC,mod_perl或其他第三方模块中的配置问题通常会干扰脚本的执行并导致错误。如果这些是原因,则可以在apache error_log中找到与详细信息相关的其他信息。
如果suphp的日志大小达到2GB或更大,您可能会看到脚本标头的过早结束错误。查看日志包含的内容并将其gzip或null。重新启动apache,然后处理suphp日志带来的任何问题。 suphp日志位于:/ usr / local / apache / logs / suphp_log
- 脚本的权限也可能导致此错误。 CGI脚本只能访问httpd.conf中指定的用户和组所允许的资源。在这种情况下,错误可能只是指出未经授权的用户正在尝试访问脚本。
醇>
<强>更新强>
在评论中获得更多信息之后,我仍然觉得这是与记忆相关的事情。
根据此SO维基:About gdlib
警告:图像功能非常耗费内存。一定要将memory_limit设置得足够高
你的PHP memory_limit 是什么?你可以把它调高一点吗?