File upload 错误不显示

File upload 错误不显示,file-upload,php,File Upload,Php,我的php照片上传脚本有问题。当我上传一个超过2mb的文件时,当我点击上传时,它不会显示这个错误。但是它在我的脚本中。你知道为什么吗?例如,我上传了一个.wma文件,它的大小是2.38MB。这超出了限制。但它只是说“文件类型不允许”,为什么它没有显示超过2mb的错误呢 这是我的剧本: <?php include 'init.php'; if(!logged_in()){ header('Location: index.php'); exit(); } include 'template

我的php照片上传脚本有问题。当我上传一个超过2mb的文件时,当我点击上传时,它不会显示这个错误。但是它在我的脚本中。你知道为什么吗?例如,我上传了一个.wma文件,它的大小是2.38MB。这超出了限制。但它只是说“文件类型不允许”,为什么它没有显示超过2mb的错误呢

这是我的剧本:

<?php
include 'init.php';

if(!logged_in()){
header('Location: index.php');
exit();
}

include 'template/header.php';
?>

<h3>Upload Image</h3>

<?php

if(isset($_FILES['image'], $_POST['album_id'])){
$image_name = $_FILES['image']['name'];
$image_size = $_FILES['image']['size'];
$image_temp = $_FILES['image']['tmp_name'];

$allowed_ext = array('jpg', 'jpeg', 'png', 'gif');
$image_ext = strtolower(end(explode('.', $image_name)));

$album_id = $_POST['album_id'];

$errors = array();

if (empty($image_name) || empty($album_id)){
    $errors[] = 'Something is missing';
} else {

    if(in_array($image_ext, $allowed_ext) === false){
        $errors[] = 'File type not allowed';
    }

    if($image_size > 2097152){
        $errors[] = 'Maximum file size is 2MB'; 
    }

    if(album_check($album_id) === false){
        $errors[] = 'Couldn\'t upload to that album';
    }

}

if(!empty($errors)){
    foreach ($errors as $error){
        echo $error, '<br />';
    }
} else {
    // upload image
}
}

$albums = get_albums();

if(empty($albums)){
echo '<p>You don\'t have any albums. <a href="create_album.php">Create an album</a></p>';
} else {
?>

<form action="" method="post" enctype="multipart/form-data">
<p>Choose a file:<br /><input type="file" name="image" /></p>
<p>
Choose an album:<br />
<select name="album_id">
    <?php 
    foreach ($albums as $album){
        echo '<option value="', $album['id'], '">', $album['name'], '</option>';
    }
    ?>
</select>
</p>
<p><input type="submit" value="Upload" /></p>
</form>

<?php
}

include 'template/footer.php';
?>

上传图像
选择一个文件:

选择相册:

再次感谢大家对我的简单帖子的耐心,感谢你们中许多更有经验的程序员!
-TechGuy24

根据代码,如果上传的文件大小大于2mb,则应为。然而,除了人之外,计算机从不犯错,因此调试是很重要的

只需替换代码

if($image_size > 2097152){
    $errors[] = 'Maximum file size is 2MB'; 
}
使用调试语句

if($image_size > 2097152){
    echo "in if, image size=".$image_size;
    $errors[] = 'Maximum file size is 2MB'; 
} else {
    echo "in else, image size=".$image_size;
}
这只是调试的第一步。它可能会也可能不会解决真正的原因。让我们知道输出

评论后编辑:

把代码放在文件的开头

echo "files<pre>";
print_r($_FILES);
echo "</pre>imgsz=".$_FILES['image']['size'];
如果显示错误=1,请检查

这意味着您在php.ini中的upload_max_filesize设置为2MB或更低。一旦有人上传了比这个大的文件,它就永远不会到达您的代码,因为PHP默认会拒绝该文件

要解决这个问题,请打开php.ini并增加上传文件大小的限制

评论后编辑3

改变

if($_FILES['image']['error']==1){


这将解决问题。

您是否检查了
$image\u size
是否设置为正确的值?如果您的服务器因其设置而截断上载,可能是您的文件大小低于阈值?很抱歉,我不确定我是否理解您的意思?请尝试在代码中的某个位置添加
echo$image\u size
,然后再次上载您的WMA文件。它将显示文件在处理时的实际大小。它现在显示“在其他情况下,图像大小=0文件类型不允许”,但为什么它看不到大小?在上传之前,当我将鼠标悬停在文件上方时,它的大小显然是2.38mb。很抱歉,我错过了,你想让我在脚本的最顶端添加这段代码吗?是的。并检查错误值是多少。据我所知,它必须是1。它输出:“文件数组([image]=>Array([name]=>poem3.wmv[type]=>[tmp_name]=>[error]=>1[size]=>0])imgsz=0”
if($image_size > 2097152){
if($_FILES['image']['error']==1){