PHP 文件上傳之常見問題($_FILES為空,move_uploaded_file()函數報錯)


$_FILES數組為空

  • 1.檢查form表單
    1.1 是否添加enctype="multipart/form-data"屬性,
    1.2 是否使用post發送方式

  • 2.檢查PHP配置文件php.ini
    如果不知道php.ini文件在什么位置,可以在當前PHP文件中輸入echo phpinfo(); 然后在瀏覽器中查看PHP版本信息,如下圖所示即為php.ini存儲位置,然后在命令窗口打開( vi ).

    2.1查看file_uploads屬性是否為on
    在命令模式下輸入?file_uploads即可快速找到該屬性;
    2.2 查看upload_max_filesize設置,如果比php中設置的size尺寸小也會導致$_FILES為空,默認為2M,可以改為自己想要;

    2.3 修改max_execution_time 屬性值,一般上傳默認為30s,如果文件大於5M時這個時間就不夠用了,可以將其設置為0,也就是不受時間限制
    2.4 如果是多個文件上傳,需要修改post_max_size 屬性,默認為8M,它是整個form的大小,如果upload_max_filesize超過post_max_size的大小也會影響文件上傳


move_uploaded_file()如果出現了"failed to open stream"的警告,如下圖所示


這是最終存儲上傳文件的文件夾沒有權限的問題,因為上傳文件首先是作為臨時文件存儲,然后使用move_uploaded_file()將文件移動到保存的位置,而保存的文件夾沒有寫入的權限,可以在PHP文件中輸入 echo exec('who am i');查看當前使用者
解決的辦法是將上傳文件要保存的文件夾修改權限,在該文件夾的命令模式下輸入chmod 757 upload就可以了。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM