1. 程式人生 > >PHP 大檔案上傳

PHP 大檔案上傳

php ini_set更改php.ini配置,通過它修改php.in達到php上傳檔案大小限制是不行的,除非修改.htaccess檔案

原文連結 https://www.cnblogs.com/caicaizi/p/6821860.html

 

PHP ini_set() 無效的原因:
如題:我租的是虛擬主機,php.ini裡的upload_max_filesize是預設的2M,要直接修改php.ini檔案是不可能的。我如果想上傳超過2M的怎麼呢?ini_set("upload_max_filesize", "8M");我試了,好象沒有用!!
ini_set("upload_max_filesize", "8M");肯定不能用啊,要是隨便一個使用者都能修改的話,那這個虛擬主機上的其他使用者不倒黴了?!!
我改過php.ini中的upload_max_filesize 有效。(假的)
========================================================================================================
ini_set,post_max_size,upload_max_filesize,magic_quotes_gpc等用ini_set設定不了!

ini_set('max_execution_time','10′);
ini_set('memory_limit','1024M');

echo 'max_execution_time = ' . ini_get('max_execution_time') . "";
echo 'memory_limit = ' . ini_get('memory_limit') . "";
echo 'post_max_size = ' . ini_get('post_max_size') . "";
echo 'upload_max_filesize = ' . ini_get('upload_max_filesize') . "";

ini_set('max_execution_time','10′);
ini_set('memory_limit','1024M');
注意:
post_max_size,upload_max_filesize用下面的方法是修改不了的.
ini_set('post_max_size','1024M');
ini_set('upload_max_filesize','1024M');
正確做法是用.htaccess檔案:
php_value upload_max_filesize "80M"
php_value post_max_size "80M"
php_value max_execution_time "2000"
php_value memory_limit "150M"

補充知識點:
其實在php文件裡有說明upload_max_filesize的可修改範圍是PHP_INI_PERDIR。
PHP_INI_PERDIR的意思是域內指令可以在php.ini、httpd.conf或.htaccess檔案中修改。
PHP_INI_SYSTEM 域內指令可以在php.ini和httpd.conf檔案中修改
所以upload_max_filesize用int_set是無法修改的。只有可修改範圍是PHP_INI_ALL的才可以用int_set修改。
Nginx,上傳:通過設定nginx的client_max_body_size解決nginx+php上傳大檔案的問題
http://hi.baidu.com/zhizheqianlv/item/d5989d506b1f6f15aaf6d702
client_max_body_size
這個可以限制

magic_quotes_gpc 用 get_magic_quotes_gpc() 獲得,不能用 set_magic_quotes_gpc 修改,原因是沒這個函式。而magic_quotes_runtime可以用set_magic_quotes_runtime()來設定
http://www.111cn.net/phper/php-function/34292.htm





ini_set可以快速的修改php.ini配置設定哦,無需開啟php.ini就可以了:
對了那個fastcgi設定臨時上傳大小可以通過那個對php.ini裡的檔案改動進行設定能生效麼?