【问题标题】:PHP 7.4 and MIME type of remote filesPHP 7.4 和 MIME 类型的远程文件
【发布时间】:2020-04-07 17:51:19
【问题描述】:

我遇到了 PHP 7.4 的问题。以下场景:我有一个名为“image.php”的文件,其中附加了一个参数“url”。这将加载外部图像。为了确保它是 PNG,我通过 curl 检查了 MIME 类型。使用 PHP 7.3(及更低版本)它可以正常工作,但 PHP 7.4 不返回图像,它返回错误消息(the('No png file'))。

一小部分代码:

$cURL = curl_init($_GET['url']);
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);
curl_exec($cURL);
$curl_info = curl_getinfo($cURL, CURLINFO_CONTENT_TYPE);
if ($curl_info == 'image/png') die('No png file');
header('Content-type:'.$curl_info);
readfile($_GET['url']);

有人知道为什么它在 PHP 7.4 下不起作用吗?

【问题讨论】:

  • 我很想知道您为什么要尝试检查是否为 TRUE 的内容并在 die() 中使用“无 png 文件”。它可能无法解决这个问题,但它似乎自相矛盾。
  • 前后有一些代码,但这是用于测试目的的“有问题的代码部分”。正如我所说:在 PHP 7.3 及以下版本下运行,但不适用于 PHP 7.4... :-/
  • 你做了什么调试? $curl_info 的值是多少?

标签: php image curl php-7.4


【解决方案1】:

为什么PHP 7.3 可以正常工作?你想在这里完成什么?

如果您想显示类型为PNG 的图像,您不认为您应该在代码中明确指定吗?

$cURL = curl_init($_GET['url']);
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);
curl_exec($cURL);
$curl_info = curl_getinfo($cURL, CURLINFO_CONTENT_TYPE);
if ($curl_info == 'image/png') {
    header('Content-type:' . $curl_info);
    readfile($_GET['url']);
} else {
    die('No png file');
}

顺便说一句,上述代码在PHP 7.4PHP 7.3 上完美显示图像当且仅当图像的类型是PNG

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-13
    • 2010-11-30
    • 2014-09-17
    • 1970-01-01
    • 2014-02-13
    • 1970-01-01
    • 2016-05-19
    相关资源
    最近更新 更多