【问题标题】:PHP Crash on echo回声时 PHP 崩溃
【发布时间】:2019-04-11 11:47:32
【问题描述】:

请忽略这个问题 - 我发现这里描述的问题不是真正的问题。 感谢那些试图提供帮助的人。 问题是 gmagick 特定的。不是一般的 php 问题。

我在 PHP 版本 5.6.40-6+ubuntu18.04.1+deb.sury.org+3 上有这个简单的代码

<?php
header("Content-type: image/png");
$base_image = new Gmagick();
$base_image->newImage(3, 3, "#555555");
$base_image->setImageFormat('png');     
$x = $base_image->getImage();
echo $x;
?>

它在 ubuntu 16 php 5.6 服务器上运行良好(输出 3x3 图像)。 我用相同的堆栈从头开始创建了一个新的 Ubuntu 18.04 服务器(详情如下),但它在 echo 语句中崩溃。

错误日志显示:[Thu Apr 11 11:35:48.110542 2019] [core:notice] [pid 9875] AH00051: child pid 10298 exit signal Segmentation fault (11)、/etc/apache2中可能的coredump

什么会导致表示图像的二进制字符串的回显失败?

在此处查看堆栈详细信息 https://www.awesomescreenshot.com/image/3968080/0606779cd806f2d6a6e02828dd643dfd

【问题讨论】:

  • 你有没有试过var_dump($x)看看它是否真的是一个二进制字符串?
  • 尝试用 var_dump 或 print_r 代替 echo
  • @RahulMeshram 有趣。 var_dump 给出 object(Gmagick)#2 (0) { } 它在旧的服务器上也显示了同样的东西。
  • @AndreiLupuleasa var_dump 给出 object(Gmagick)#2 (0) { } 它在旧的服务器上也显示了同样的东西。

标签: php apache segmentation-fault


【解决方案1】:

我指的是这个documentation

所以var_dump($x); 应该给你一个合适的解决方案,因为它是对象而不是字符串。

返回一个带有当前图像序列的新 Gmagick 对象。

【讨论】:

    【解决方案2】:

    这是一个 Imagick 对象。您可以将其转换为字符串,如:

    $x::getImageBlob()
    

    见:https://www.php.net/manual/en/imagick.getimageblob.php

    【讨论】:

    • 我改成了getImageBlob();现在它在工作服务器中给了我一个字符串,在非工作服务器中给了我一个 NULL。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多