上传的文件大小超过php.ini文件中定义的upload_max_filesize值,如何让$_FILES不返回NULL
时间: 2024-02-20 10:58:38 浏览: 149
当上传的文件大小超过php.ini文件中定义的upload_max_filesize值时,PHP会阻止文件上传并返回一个错误。在这种情况下,$_FILES数组是空的,也就是说,它不包含任何上传文件的信息。
要让$_FILES不返回NULL,需要在PHP代码中进行一些配置。具体来说,可以使用以下两种方法来实现:
1. 修改php.ini文件中的post_max_size和upload_max_filesize值,将它们都设置为更大的值。修改完后,需要重启Web服务器才能使修改生效。
2. 在PHP代码中使用ini_set函数,动态地将post_max_size和upload_max_filesize设置为更大的值。例如:
```php
ini_set('post_max_size', '20M');
ini_set('upload_max_filesize', '20M');
```
这样就可以在上传大文件时避免$_FILES数组返回NULL的问题。需要注意的是,第二种方法可能会受到服务器配置的限制,比如PHP的安全模式等,因此在使用时需要谨慎。
相关问题
如何解决上传的文件大小超过php.ini文件中定义的upload_max_filesize值,$_FILES返回NULL
当上传的文件大小超过php.ini文件中定义的upload_max_filesize值时,可以通过以下两种方式解决:
1. 修改php.ini文件中的upload_max_filesize值,将其设置为更大的值。修改完后,需要重启Web服务器才能使修改生效。
2. 在上传文件的表单中添加enctype="multipart/form-data"属性,同时在PHP代码中使用ini_set函数动态的将upload_max_filesize设置为更大的值。示例代码如下:
```php
ini_set('upload_max_filesize', '10M');
if ($_FILES['file']['error'] === UPLOAD_ERR_OK) {
// 文件上传成功
} else {
// 文件上传失败
}
```
需要注意的是,第二种方式可能会受到服务器配置的限制,比如PHP的安全模式等,因此在使用时需要谨慎。
php从5.6升级到7.3后 上传图片 tmp_name为null
这个问题可能是由于 PHP 配置问题造成的。在 PHP 7.2 之后,上传文件的方式发生了变化,需要使用 `$_FILES['xxx']['tmp_name']` 来获取上传文件的临时文件名。
你可以尝试在 `php.ini` 文件中查找以下参数,确保它们的值正确:
```
file_uploads = On
upload_max_filesize = 2M // 这个值可以根据你的需求进行调整,单位是字节
post_max_size = 8M // 这个值也可以根据你的需求进行调整,单位是字节
```
如果这些参数已经设置为正确的值,但问题仍然存在,你可以检查一下上传文件时的表单是否正确设置了 `enctype="multipart/form-data"` 属性。如果还有问题,建议检查一下 PHP 的错误日志,看看是否有其他提示。
阅读全文