文件太大而无法上传到服务器,即使php.ini文件已更改

时间:2016-06-22 09:58:40

标签: javascript php html ajax file-upload

我无法将(.OBJ)文件上传到服务器并获得“错误1”意味着

  

上传的文件超出了php.ini

中的upload_max_filesize指令

我从此页面获得了此信息 - http://php.net/manual/en/features.file-upload.errors.php

然后我转到php.ini文件并将upload_max_filesizepost_max_size更改为 10000M

当我尝试上传文件时,我仍然得到'错误1',即使它只有3MB。我还重新启动了服务器,以便我对php.ini文件所做的更改才能生效。我知道我的代码适用于较小的文件,因为我能够发送一个包含单词“Test”的小TXT文件。

这是form.php文件,其中包含用于处理服务器端已发送文件的PHP代码和用于创建文件选择和上载功能的HTML代码。

<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);

ini_set('max_execution_time', 3000000);

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    var_dump($_FILES);
    echo "<br/><b>File Name:</b> " . $_FILES["file"]["name"] . "<br>";
    echo "<b>Type:</b> " . $_FILES["file"]["type"] . "<br>";
    echo "<b>Size:</b> " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
    echo "<b>Temp File Name:</b> " . $_FILES["file"]["tmp_name"] . "<br>";
    echo "<b>Error:</b> " . $_FILES["file"]["error"] . "<br>";

    $sourcePath = $_FILES['file']['tmp_name'];            // Storing source path of the file in a variable
    $targetPath = "upload/" . $_FILES['file']['name'];    // Target path where file is to be stored

    move_uploaded_file($sourcePath, $targetPath);

    exit;
}
?>

<!DOCTYPE html>
<html>
<head>
    <script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
</head>
<body>
    <form action="form.php" method="post" enctype="multipart/form-data">
        <label>File</label>
        <input type="file" name="file">
        <input type="submit" value="Upload"> 
    </form>
    <div></div>
</body>
<script>

$(function () {
    $('form').on('submit', function (e) {
        e.preventDefault();

        $.ajax({
            url: this.action,
            type: this.method,
            data: new FormData(this),
            processData: false,
            contentType: false,
            success: function (res) {
                $('div').html(res);
            }
        });
    });
});

</script>
</html>

总结我的问题是,即使我更改了php.ini文件的相应变量,为什么我不能上传所需的文件?

2 个答案:

答案 0 :(得分:1)

您必须重新启动Webserver:

service apache restart #If you have Apache
service nginx restart #If you have NGINX

如果你正在运行php-fpm:

service php-fpm restart

你有多个php.ini吗? 请注意:

/etc/php/php-fpm
/etc/php/php-cli
/etc/php/php-cgi

在某些情况下,您还必须在网络服务器上允许更大的文件上传。

NGINX:

client_max_body_size 10000M;

答案 1 :(得分:0)

Jquery ajax从客户端转移到仅切断数据,而不是文件。如果要使用jquery ajax传输文件,请尝试此jquery extended library。我之前使用过它并且工作正常。