msgbartop
PHP语言, PHP扩展, Zend引擎相关的研究,技术,新闻分享 – 左手代码 右手诗
msgbarbottom

13 Apr 10 ini_set memory_limit在safe_mode下不可用

如果你ini_set(“memory_limit”, *)返回了false,

不妨检查下, 是否开启了安全模式(手册中没有述及)..

一句话, 记录下.

在安全模式下不能使用ini_set的指令:

1. max_execution_time
2. memory_limit
3. child_terminate


分享到:



Random Posts:

Tags: , , ,

10 Responses to “ini_set memory_limit在safe_mode下不可用”

  1. smalla |

    太对了!竟然还有人非要说这个不能设置,原来还真的是安全模式下

  2. feng |

    坑爹啊,找了半天原因。。。多谢!

  3. laruence |

    @luckgo 呵呵,那看看是不是因为php.max_input_time导致的

  4. luckgo |

    看了,禁用函数里没这个函数,服务器的php.ini完全拿到本机上来运行都是正常的。

    主要问题在这里,是上传文件时碰到问题,我随便写个脚本调试时是正常的,比如我ini_set后,马上ini_get,能够看到我ini_set的值,说明没有问题,但如果是上传文件脚本,就有问题了,很奇怪。传一个10M多文件,也不是很大,但只要超过php.ini中的max_execution_time时间就有问题,我设置的ini_set就无效,这算哪门子事,真是邪乎?
    报错提示的是脚本代码开始的行(不含注释)运行超时,而代码开始的行(不含注释)无论是什么如简单赋值语句都会这样。 我所说的代码开始的行是指<?php后,不含注释的第一行。

    在本机中,超时时间是我ini_set设置的时间,报错超时的行是真正上传脚本所在的行,没有任何问题。

    实在搞不明白,我的php.ini配置没任何问题,
    post_max_size = 100M
    upload_max_filesize = 100M

    上传文件上限已经设的够大了。

    我google一下,有人解释是某些操作系统需打开display_startup_errors,但我开启了这个项也不行。

    我感觉是操作系统问题。

  5. laruence |

    @luckgo 有没有可能是因为服务器把ini_set列入了禁用函数列表呢? 你可以把ini_set的结果打出来看看.

  6. luckgo |

    忘了说了,服务器运行环境是windows 2008 r2 + php 5.3.5 (vc9) + apache 2.2.17,
    把服务器的php.ini拿到本机运行,一切正常,本机运行环境是windows vista + php 5.3.5 (vc9) + apache 2.2.17

    就操作系统部一样,其他配置都一样,为什么本机正常,而服务器不正常呢?

  7. luckgo |

    Laruence帮帮忙,一个很奇怪问题!

    php.ini配置:
    safe_mode = Off
    display_errors = Off
    error_reporting = E_ALL & ~E_DEPRECATED
    max_execution_time = 300

    在PHP上传程序脚本中,开头加入
    error_reporting(E_ALL);
    ini_set(‘display_errors’, ‘On’);
    ini_set(‘max_execution_time’, 30);

    执行PHP程序,明显超过300秒,但却没有任何错误提示,说明ini_set没有生效,奇怪!

    然后,改php.ini,设置
    display_errors = On

    再次执行PHP脚本,最后提示超过300秒的错误,为什么不是30秒,奇怪啊!ini_set居然没有生效!

    这是怎么回事呢?

  8. PHP内存溢出解决方案 « 梦想博客,一路帮您 |

    [...] ini_set(‘memory_limit’,’64M’); //重置php可以使用的内存大小为64M,一般在远程主机上是不能修改php.ini文件的,只能通过程序设置。注:在safe_mode(安全模式)下,ini_set失效 [...]

  9. CFC4N |

    哈,原来是这样啊…
    前段时间,我编写 sql injection,xss,csrf 事例,都跟服务器环境有关,需要频繁更改服务器的环境,想用ini_set,结果,不管我怎么弄,也不生效…纳闷到现在,后来搜了N多遍,也没解决,也不知道什么原因
    今天在您这里看到了,恍然大悟,哈…万分感谢

  10. 好黑啊 |

    顶了慢慢看

Leave a Reply

*