PHP memory_limit锁定为256MB?

时间:2012-03-01 15:44:07

标签: php

我正在尝试将memory_limit设置为512M,但它的位置为256M。

ini_set('memory_limit','512M');
ini_get('memory_limit');    //> Returns: 256M

我可以完全控制我的服务器。 (这是专门的)

请注意,512M以下的所有内容都可以使用。

ini_set('memory_limit','16M');
ini_get('memory_limit');    //> Returns: 16M

解决方案

我发现了原因。在php.ini中我有memory_limit = 256M。也许这被认为是一个上限

6 个答案:

答案 0 :(得分:7)

我能想到的3种可能/找到:

  

在PHP 5.2.1之前,为了使用这个指令,它必须是   在编译时通过使用--enable-memory-limit启用   配置线。

OR

此处详述的问题:ini_set("memory_limit") in PHP 5.3.3 is not working at all

OR

ini_set已停用

答案 1 :(得分:2)

您也可以尝试使用php.ini或.htaccess文件更改memory_limit

的php.ini

memory_limit = 512M;

.htaccess

php_value memory_limit 512M

答案 2 :(得分:1)

我注意到在我的Mac(OS X El Capitan)和新的PHP 7.0.0上,我无法通过php.ini更改memory_limit

但我可以通过添加最后一行的/etc/apache2/httpd.conf来改变它:

php_value memory_limit 1024M

并重新启动apache服务器:

sudo apachectl restart

这是正确的php.ini,我可以通过它更改其他设置。

答案 3 :(得分:1)

当天晚些时候但编辑php.ini文件对于使用Mac OS 10.11.6的php 7.1无效。我仍然继续得到'PHP致命错误:允许的内存大小....'从其值显示启动apache后内存设置没有更新。

所以不要编辑文件。

JsonNode jsonNode = null;
    try {
          //patchJson is json string (above)
        jsonNode = new ObjectMapper().readTree(patchJson);
        for (JsonNode node : jsonNode) {
            String path = node.path("path").asText();
            if(path.equalsIgnoreCase("/photos"))
            {
              //How to remove this node from root node(jsonNode)
            }
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    Patch patch = new JsonPatchMaker().fromJsonNode(jsonNode);

我发现更改以下文件解决了这个问题。

/usr/local/php5/lib/php.ini

这个文件实际上是替换了初始php.ini文件中设置的值。再次对该行进行以下更改......

/usr/local/php5/php.d/99-liip-developer.ini

memory_limit = 256M

重新启动apache。

memory_limit = 1024M

答案 4 :(得分:0)

您可以在名为“disable_functions”的指令中检入您的php.ini配置文件。检查ini_set是否被禁用。

如果启用了safe_mode,则可能不会覆盖此选项。

答案 5 :(得分:0)

我发现了原因。在php.ini中我有memory_limit = 256M。也许这被认为是一个上限。

我提出了我的需要。