代码之家  ›  专栏  ›  技术社区  ›  Matt Howell

什么限制了我的PHP资源?

  •  0
  • Matt Howell  · 技术社区  · 15 年前

    从PHP获取更多内存时遇到问题。

    这是错误消息:

    Fatal error: Allowed memory size of 20971520 bytes exhausted (tried to allocate 82 bytes) in ...
    

    然而:

    我已经将php.in i文件中的内存限制设置为32m:

    memory_limit = 32M;
    

    我还尝试在实际脚本中手动重写它:

    ini_set('memory_limit', '32M');
    

    这就是我丢失的地方,我已经通过phpinfo()确认了这个php.ini文件是实际使用的ini文件,并且内存限制似乎设置正确。内存中的行数限制给出了:

    memory_limit    32M 32M
    

    所以看起来所有的配置都是正确的,但我只得到20971520字节(~20米)。

    我还应该在哪里寻找这种限制的实施呢?

    编辑: 我在nginx/fastcgi下运行php,在vps中的Ubuntu9.04上。php cgi进程似乎确实有点资源匮乏(res=25M,virt=187M),但我有1000万的物理内存可用,500万的交换空间可用。

    3 回复  |  直到 15 年前
        1
  •  1
  •   Powerlord    15 年前

    我的第一直觉是猜测PHP正在读取不同的php.ini。

    在Debian(很可能是Ubuntu)中,每个版本的php(cli、cgi和apache)都有自己的php.ini副本。

        2
  •  1
  •   Matt Howell    15 年前

    我只是仔细研究了一下我正在运行的代码,有人把它硬编码成一个配置文件:

    ini_set('memory_limit', '20M');
    

    它超越了我所做的一切。唷!

        3
  •  0
  •   John Boker    15 年前

    你可以尝试在.htaccess文件中设置它,这是我必须做的,才能让一个站点在一台服务器上工作。

    以下是我使用的设置:

    php_value  upload_max_filesize  50M
    php_value  post_max_size  60M
    php_value  memory_limit  128M