注意:未定义的偏移量:0错误

时间:2011-08-16 14:44:14

标签: php exif

我一直收到以下错误,我不知道怎么解决它!救命啊!

注意:未定义的偏移量:在第51行的C:\ public_html \ admin \ includes \ funcs.inc.php中<0

我确实得到了警告输出错误...

function getFileExtension($key) {
    $extensions = array(IMAGETYPE_GIF => '.gif', IMAGETYPE_JPEG => '.jpg', IMAGETYPE_PNG => '.png');

    $exifType = exif_imagetype($_FILES['artwork']['tmp_name'][$key]);   
    LINE 51 ---> $ext = $extensions[$exifType];

    return $ext;
}



$ext = getFileExtension($key);

if (!isset($ext)) {
    $warning = 'Error: Unsupported file type (supported images: gif, jpeg, png).';
}

4 个答案:

答案 0 :(得分:1)

您是否检查$ _FILES ['artwork'] ['tmp_name']是否为空? 我想你的文件没有上传。

您应该提供更多详细信息或一些调试信息

问候

答案 1 :(得分:1)

exif_imagetype的文档表明,当未检测到有效签名时,它会返回false。如果您尝试$extensions[false],您将获得偏移误差,因此这可能正在发生。

答案 2 :(得分:1)

似乎你没有用逗号声明数组键:

array(IMAGETYPE_GIF => '.gif', IMAGETYPE_JPEG => '.jpg', IMAGETYPE_PNG => '.png');

尝试使用它:

array('IMAGETYPE_GIF' => '.gif', 'IMAGETYPE_JPEG' => '.jpg', 'IMAGETYPE_PNG' => '.png');

如果有效,请告诉我。

答案 3 :(得分:1)

在exif_imagetype()返回您未在数组中定义的值的任何情况下,您都会收到偏移错误。防止这种情况的更好解决方案是在设置返回值之前测试数组键是否存在。

function getFileExtension($key) {
    $extensions = array(IMAGETYPE_GIF => '.gif', IMAGETYPE_JPEG => '.jpg', IMAGETYPE_PNG => '.png');

    $exifType = exif_imagetype($_FILES['artwork']['tmp_name'][$key]);

    // Add this test.
    // Modified because a value of false in $exifType will cause
    // array_key_exists() to fail.
    if($exifType && array_key_exists($exifType, $extensions)) {
        $ext = $extensions[$exifType];
    } else {
        $ext = false;
    }

    return $ext;
}

$ext = getFileExtension($key);

if (!isset($ext)) {
    $warning = 'Error: Unsupported file type (supported images: gif, jpeg, png).';
}

更新以测试$ exifType中的值,因此它不会导致array_key_exists()失败。