问题:
我们上传文件文件时会发生 Call to a member function move() on null的错误。
我们在php控制器代码中输入如下代码:dump($error = $_FILES);exit;查看错误。如果在这里int里面出现了错误代码“1”,就很明显了,接下来分享下所有的错误代码:
0:表示没有发生任何错误,文件上传成功
1:表示上传文件的大小超出了再PHP配置文件中upload_max_filesize选项限制的值
2:表示上传文件大小超出了HTML表单中MAX_FILE_SIZE选项所指定的值
3:表示文件只被部分上传
4:表示没有上传任何文件
若出现1:的状况:
php.ini 配置对php上传文件大小的影响参数有:
配置项 可能值 功能描述
file_uploads ON 确定服务器上的PHP脚本是否可以接受HTTP文件上传
memory_limit 8M 设置脚本可以分配的最大内存量,防止失控的脚本独占服务器内存
upload_max_filesize 改为8M 限制PHP处理上传文件的最大值,此值必须小于post_max_size值
post_max_size 改为16M 限制通过POST方法可以接受的信息最大量
php.ini配置信息可以在前台输入进行查看php.ini目录信息。
但如果要上传>8M的大体积文件,只设置上述四项还一定能行的通。进一步配置以下的参数
max_execution_time = 600 ;每个PHP页面运行的最大时间值(秒),默认30秒
max_input_time = 600 ;每个PHP页面接收数据所需的最大时间,默认60秒
memory_limit = 8m ;每个PHP页面所吃掉的最大内存,默认8M
把上述参数修改后,在网络所允许的正常情况下,就可以上传大体积文件了
max_execution_time = 600max_input_time= 600memory_limit=32m
file_uploads=on
upload_tmp_dir= /tmp
upload_max_filesize=32m
post_max_size= 32m
解决方法:
配置php.ini文件 (以上传500M以下大小的文件为例),查找以下选项并修改:
file_uploads = On ;打开文件上传选项
upload_max_filesize = 500M ;上传文件上限
如果要上传比较大的文件,仅仅以上两条还不够,必须把服务器缓存上限调大,把脚本最大执行时间变长 :
post_max_size = 500M ;post上限
max_execution_time = 1800 ; Maximum execution time of each script, in seconds脚本最大执行时间
max_input_time = 1800 ; Maximum amount of time each script may spend parsing request data
memory_limit = 128M ; Maximum amount of memory a script may consume (128MB)内存上限
总结:文件不大,一般情况直接修改了php.ini文件的upload_max_filesize = 10M(默认是2M),就可以了
原文链接:https://blog.csdn.net/qq_38588845/article/details/80770264