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

问题描述:

我不断收到以下错误,我不知道如何修复它!帮帮我!注意:未定义偏移量:0错误

注意:未定义抵消:0在C:\的public_html \ ADMIN \包括上线\ funcs.inc.php 51

我得到的警告输出错误想法...

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).'; 
} 
+2

'$ key'是..? 51线在哪里?你上传了正确的文件吗?你用什么HTML来做到这一点?你可以用'print_r'来证明它吗?你到目前为止进行了哪些其他调试? –

exif_imagetype的文档表明,它没有检测到一个有效的签名时返回false。如果你尝试$extensions[false]你会得到你的偏移错误,所以这可能是发生了什么。

+0

即时通讯上传一个pdf,看看函数如何反应......这可能是为什么它返回一个偏移量错误,因为它不在数组扩展中... – Marco

+1

@Marco - exif-imagetype不检测PDF。你会看到引用的文档中没有相应的常量。 – borrible

+0

好的,我想我明白了!如果($ exifType)返回$ extensions [$ exifType],我添加了一个条件来检查返回值;这似乎工作 – Marco

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

你应该提供更多细节或一些调试信息

问候

似乎你还没有宣布用逗号数组键:

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

尝试使用此:

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

并请让我知道,如果它的工作原理。

+1

IMAGETYPE_GIF等...都是exif_imagetype常量,因此在数组中引用它们是不正确的。 – borrible

+0

尝试一下,但它不是逗号 – Marco

+1

exif图像类型可以不定义。例如:array(IMAGETYPE_GIF =>'gif','mime_type'=>'image/gif'), –

在任何情况下,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()失败。

+0

警告:array_key_exists()[function.array-key-exists]:第一个参数应该是一个字符串或一个整数... – Marco

+0

这可能是因为exif-imagetype没有检测到PDF,因此不存在于第一位 – Marco

+0

确实有效---> if($ exifType)return $ extensions [$ exifType]; – Marco