php ini_set函数无效怎么解决

利用ini_set可以快速的修改php.ini配置设置哦,无需打开php.ini就可以了,特别是虚拟主机时你没有修改php.ini的权限时就会发现这个函数的作用了,关于ini_set,post_max_size,upload_max_filesize,magic_quotes_gpc等用ini_set设置不了的解决办法!

  1. ini_set(‘max_execution_time’,’10′);
  2. ini_set(‘memory_limit’,’1024M’);
  3. echo ‘max_execution_time = ‘ . ini_get(‘max_execution_time’) . ”
  4. “;
  5. echo ‘memory_limit = ‘ . ini_get(‘memory_limit’) . ”
  6. “;
  7. echo ‘post_max_size = ‘ . ini_get(‘post_max_size’) . ”
  8. “;
  9. echo ‘upload_max_filesize = ‘ . ini_get(‘upload_max_filesize’) . ”
  10. “;
  11. ini_set(‘max_execution_time’,’10′);
  12. ini_set(‘memory_limit’,’1024M’);

注意:post_max_size,upload_max_filesize用下面的方法是修改不了的.

ini_set(‘post_max_size’,’1024M’);

ini_set(‘upload_max_filesize’,’1024M’);

正确做法是用.htaccess文件:

  1. php_value upload_max_filesize “80M”
  2. php_value post_max_size “80M”
  3. php_value max_execution_time “2000″
  4. php_value memory_limit “150M”

实例设置max_execution_time,代码如下:

  1. <?
  2. $old_max_execution_time = ini_set('max_execution_time', 120);
  3. echo "old timeout is $old_max_execution_time <br />";
  4. $max_execution_time = ini_get('max_execution_time');
  5. echo "new timeout is $max_execution_time <br />";
  6. echo 'function sets supported in this install are:<br />';
  7. $extensions = get_loaded_extensions();
  8. foreach ($extensions as $each_ext)
  9. {
  10. echo "$each_ext <br />";
  11. echo '<ul>';
  12. $ext_funcs = get_extension_funcs($each_ext);
  13. foreach($ext_funcs as $func)
  14. {
  15. echo "<li> $func </li>";
  16. }
  17. echo '</ul>';
  18. }
  19. ?>

补充知识点:其实在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修改。

magic_quotes_gpc 用 get_magic_quotes_gpc() 获得,不能用 set_magic_quotes_gpc 修改,原因是没这个函数。而magic_quotes_runtime可以用set_magic_quotes_runtime()来设置