【问题标题】:PHP GD Library Images Not Showing For Some Users某些用户未显示 PHP GD 库图像
【发布时间】:2013-01-16 08:01:36
【问题描述】:

我经营一个虚拟宠物网站,我们使用 PHP GD 库来制作我们的头像和宠物。到目前为止,我们有超过一千个用户,其中只有 3 个用户遇到了这个问题。但是,对于每个用户来说,这是完全相同的问题。

这是这些用户看到的screenshot

大多数图像只显示“断开的链接”图标,但每隔一段时间它就会开始构建图像并在完成之前停止。

这些是我修复它的尝试:

  • 从代码中删除了除获取图像并打印出来之外的所有内容。
  • 将代码放在由不同主机完全不同的服务器上
  • 从 Cloudflare DNS 服务器中删除了该站点,以查看是否是 Cloudflare 引起的
  • 使用 JPEG 图像而不是 PNG

这是我迄今为止从这些用户那里收集到的信息:

  • 通过代理浏览我们的网站可以加载图片
  • 使用同一互联网连接的笔记本电脑成功加载图像
  • 浏览器要么只是输出损坏的链接,要么说图像包含错误并且无法显示。

最后,这是我正在使用的简单测试图像页面的代码:

<?
$finalimage = imagecreatetruecolor(500,500);
$file = 'http://www.somesite.com/picture.jpg';
$layers = imagecreatefromjpeg($file);
imagecopy($finalimage, $layers, 0, 0, 0, 0, 500, 500);
imagedestroy($layers);

header("Content-type: image/jpeg");
imagejpeg($finalimage);
imagedestroy($finalimage);
?>

【问题讨论】:

  • 那真的是你的测试脚本吗?因为发送image/jpeg的Content-type然后返回imagepng是没有意义的。
  • 抱歉,从 png 切换到 jpeg 时搞混了。已编辑。
  • 您的日志中有任何内容吗?你确定你没有达到内存限制吗?
  • 日志中没有任何内容。而且绝对不会达到内存限制。
  • 你确定你也在检查 php 错误日志吗?如果您在服务器端绝对找不到某些东西,则可能是客户端或网络问题。有趣的一件事是您对修复它的代理服务器的评论。也许您有这些用户的 dns 问题或损坏的 dns,尽管他们为什么会有一个损坏的问题没有意义。也可能是路由问题到您的主机,这也可能解释代理修复。我认为,您必须以某种方式找到可以与之合作的测试用例人员。

标签: php php-gd imagecreatefrompng


【解决方案1】:

你忘记了最后的imagedestroy($finalimage);,但我不知道它是否能解决你的问题

【讨论】:

  • 可以,但是为了节省服务器内存,必须强制使用imagedestroy()
  • 不是真的,当脚本结束时,内存被垃圾回收了。
  • @gview 那为什么 imagedestroy 存在?
  • 如果您有一个创建许多不同图像的脚本,并且您想尝试节省内存,那么 imagedestroy() 将是有意义的。这不是必需的,并且最终与问题无关,正如 Taylor 所指出的,最终追溯到在其工作站上加载了 Kaspersky AV 的个人用户。我并不是说 imagedestroy() 使用起来不好......它只是与问题无关,也不是必需的,也不是问题的解决方案。
  • 感谢您提供这些精确度 :)
【解决方案2】:

我们的用户遇到的问题是使用卡巴斯基反病毒软件。他们必须将我们的 URL 添加到网络安全下的受信任站点列表中。这样做后,所有图像都加载正常。

【讨论】:

    猜你喜欢
    • 2012-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    相关资源
    最近更新 更多