用xheditor上傳文件時(shí),出現(xiàn)一點(diǎn)上傳就卡死沒(méi)反應(yīng)的問(wèn)題,在后臺(tái)處理上傳的php文件里打印$_FILES時(shí)發(fā)現(xiàn)為空數(shù)組,出現(xiàn)這個(gè)問(wèn)題的原因主要有兩個(gè):表單原因或者php設(shè)置原因:
1,表單類型:
上傳文件的表單編碼類型必須設(shè)置成 enctype="multipart/form-data",因?yàn)橐獋鞔髷?shù)據(jù),一般提交方式用POST
2,php設(shè)置問(wèn)題:
php默認(rèn)的post_max_size 為2M.如果 POST 數(shù)據(jù)尺寸大于 post_max_size $_POST 和 $_FILES superglobals 便會(huì)為空. 解決的方法是:
1. 一般的文件上傳,除非文件很小.就像一個(gè)5M的文件,很可能要超過(guò)一分鐘才能上傳完. 但在php中,默認(rèn)的該頁(yè)最久執(zhí)行時(shí)間為 30 秒.就是說(shuō)超過(guò)30秒,該腳本就停止執(zhí)行. 這就導(dǎo)致出現(xiàn) 無(wú)法打開(kāi)網(wǎng)頁(yè)的情況.這時(shí)我們可以修改 max_execution_time 在php.ini里查找 max_execution_time 默認(rèn)是30秒.改為 max_execution_time = 0(可修改范圍為PHP_INI_ALL) 0表示沒(méi)有限制
或者在php文件頭設(shè)置ini_set('max_execution_time',0);
2. 修改 post_max_size 設(shè)定 POST 數(shù)據(jù)所允許的最大大小。此設(shè)定也影響到文件上傳。 查找 post_max_size .改為 post_max_size = 150M(可修改范圍為PHP_INI_PHP_INI_PERDIR)
3. 很多人都會(huì)改了第二步.但上傳文件時(shí)最大仍然為 8M. 為什么呢.我們還要改一個(gè)參數(shù)upload_max_filesize 表示所上傳的文件的最大大小。 查找upload_max_filesize,默認(rèn)為8M改為 upload_max_filesize = 100M(可修改范圍為PHP_INI_PHP_INI_PERDIR)
另外要說(shuō)明的是,post_max_size 大于 upload_max_filesize 為佳.
常量 | 值 | 含義 |
---|---|---|
PHP_INI_USER | 1 | 配置選項(xiàng)可在用戶的 PHP 腳本或 Windows 注冊(cè)表中設(shè)置 |
PHP_INI_PERDIR | 2 | 配置選項(xiàng)可在 php.ini, .htaccess 或 httpd.conf 中設(shè)置 |
PHP_INI_SYSTEM | 4 | 配置選項(xiàng)可在 php.ini or httpd.conf 中設(shè)置 |
PHP_INI_ALL | 7 | 配置選項(xiàng)可在各處設(shè)置 |