php动态更改post_max_size, upload_max_filesize等值
在配置文件里 有些PHP 配置选项可以用int_set() 函数 直接在 项目里修改。但是有些值确不行。例如和上传文件有关的post_max_size和upload_max_filesize
int_set('post_max_size','1024M') 和 int_set('upload_max_filesize', '1024M') 都修改不了原值。
在PHP 文档有说明三个修改指令:
- PHP_INI_PERDIR 可以在php.ini,httpd.conf,.htaccess 文件修改
- PHP_INI_SYSTEM 可以在php.ini,httpd.conf 中修改
- PHP_INI_ALL 只有修改范围是这个的才能用int_set 修改
如果想动态的修改不是PHP_INI_ALL 又是PHP_INI_PERDIR属性的正确方法是:
在文件所在目录下的.htaccess 文件里写下这些修改配置项:
<!--lang:shell--><IFModule mod_php5.c>php_value upload_max_filesize 2000Mphp_value post_max_size 2500Mphp_value max_file_uploads 50</IFModule>
其中 post_max_size 大于 upload_max_filesize 为佳
.htaccess这个文件,这个文件是apache用的分布式配置文件
.htaccess必须以ASCII模式上传,而且给其可读权限。
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] </IfModule> |
# BEGIN WordPress <IfModule mod_rewrite.c> #如果mode_rewrite.c模块存在 则执行以下指令 RewriteEngine On #开启rewriteEngine RewriteBase / #重写范围,这里/为本地顶级目录 RewriteRule ^index\.php$ – [L] #重写规则 RewriteCond %{REQUEST_FILENAME} !-f #重写条件,%{}中内容为apache定义的一系列返回参数 RewriteCond %{REQUEST_FILENAME} !-d #重写条件,%{}中内容为apache定义的一系列返回参数 RewriteRule . /index.php [L] #同样是重写规则 </IfModule> # END WordPress 这是我们开启了固定链接功能之后,wordpress给我们加上的htaccess #重写规则 ^index\.php$是匹配正则表达式,只匹配了index.php 后面的短线 如果我没记错的话 就是指null 后面的L是结束符号,同等级的还有 [L](last):终止一系列的RewriteCond和RewriteRule [R](redirect):触发一个显示的跳转,也可以指定跳转类型,如[R=301] [F](forbidden):禁止查看特定文件,apache会触发403错误 [NC](no case):表示忽略大小写 |