注意:我是 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 代码将其发送到哪里?我希望它显示在客户端浏览器窗口的“页面上”。
您是否有内容类型为“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 个参数。