PHP 上传不起作用;文件大小似乎是问题,但 upload_max_filesize 和 post_max_size 设置适当

问题描述 投票:0回答:1

注意:我是 PHP 新手。

我的 PHP 代码上传小文件,但静默失败,测试文件约为 11M。因此,我发现了许多相关问题,例如this,并从中找到了 /etc/php.ini,并将 post_max_size 更新为零,并且,因为它似乎没有“不要设置limit”,将 upload_max_filesize 设置为 128G - 应该可以!

但是没有?!

我停止了Apache并重新启动它,在测试时重新加载了客户端,但仍然不起作用。

如果您想查看代码 - 这只是 PHP 部分...也许此 Apache 配置的其他方面阻碍了我的应用程序?

即:

<?php

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    if (isset($_FILES['files'])) {
        $errors = [];
        $path = 'uploads/';
        $extensions = ['jpg', 'jpeg', 'png', 'gif', 'txt', 'mpeg'];
        
        $all_files = count($_FILES['files']['tmp_name']);
        
        for ($i = 0; $i < $all_files; $i++) {
            $file_name = $_FILES['files']['name'][$i];
            $file_tmp = $_FILES['files']['tmp_name'][$i];
            $file_type = $_FILES['files']['type'][$i];
            $file_size = $_FILES['files']['size'][$i];
            $file_ext = strtolower(end(explode('.', $_FILES['files']['name'][$i])));            
            $file = $path . $file_name;                
            move_uploaded_file($file_tmp, $file);
        }

        if ($errors) print_r($errors);
    }
}

另一个问题是我没有收到任何错误输出,但也许我没有查看 print_r 代码将其发送到哪里?我希望它显示在客户端浏览器窗口的“页面上”。

php
1个回答
0
投票

您是否有内容类型为“application/x-www-form-urlencoded”标头的请求? post_max_size 设置为 0 不适用于某些内容类型标头。 https://www.php.net/manual/en/ini.core.php#ini.post-max-size

尝试为 post_max_size 指定一个至少等于 upload_max_filesize 的值。 例如: post_max_size=128M upload_max_filesize=128M

请注意,memory_limit 也必须至少等于这 2 个参数。

© www.soinside.com 2019 - 2024. All rights reserved.