問題:
我們上傳文件文件時會發生 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 echo phpinfo();?>進行查看php.ini目錄信息。
但如果要上傳>8M的大體積文件,只設置上述四項還一定能行的通。進一步配置以下的參數
max_execution_time = 600 ;
每個PHP頁面運行的最大時間值(秒),默認30秒 max_input_time = 600 ;
每個PHP頁面接收數據所需的最大時間,默認60秒 memory_limit = 8m ;
每個PHP頁面所吃掉的最大內存,默認8M
把上述參數修改后,在網絡所允許的正常情況下,就可以上傳大體積文件了
max_execution_time = 600 max_input_time = 600 memory_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