php - 增加 PHP 内存限制(Apache、Drupal6)

标签 php apache drupal drupal-6 memory-limit

我正在尝试在共享托管服务器上运行 Drupal 安装。 (我只是订阅了提供商 - 我不拥有盒子。)

我需要增加 Apache 服务器的 PHP 内存限制。我试过了

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

在settings.php(每个请求中包含的文件)中,但这会导致内部服务器错误500。如果我将其取出,则会出现此错误:

Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 19456 bytes)...

旁问:19456小于33554432,为什么说allowed size exhausted?

我也试过把它放在 .htaccess 上:

 php_value memory_limit                 128M 

这没有效果。

最佳答案

您收到的错误消息:

Allowed memory size of 33554432 bytes exhausted (tried to allocate 19456 bytes)

表示您正在尝试分配超过允许使用的 33554432 字节;即 32 MB:

; 33554432/1024/1024
        32

表明分配失败是在 PHP 尝试分配 19 KB 时;但是已经分配了将近 32MB——这些分配并没有失败,因为它们的总数不到 32MB。

错误消息的“19456 字节”部分并不是真正相关的:相关的是您的 memory_limit 设置为 32 MB。


考虑到 memory_limit 是某种安全措施,您的托管服务提供商允许您更改其值会很奇怪...

如果您在共享主机上,这意味着服务器上的任何人都可以获得他们想要的任意数量的内存......这对同一服务器上的其他用户来说可不是那么好!

顺便说一句:32MB 实际上是一个相当合理的值——我从未见过配置为允许 Web 应用程序使用超过 32MB 的服务器……根据 PHP 5.2 的默认值似乎是 16MB the manual
(我已经使用 Drupal 几个月了)


关于错误500,我没有太多的想法......一种可能是safe_mode被激活,并且它不允许在执行时设置memory_limit。

手册对此并没有说太多,但是在 max_execution_time 指令下有一些信息:

You can not change this setting with ini_set() when running in safe mode. The only workaround is to turn off safe mode or by changing the time limit in the php.ini.

我想 memory_limit 也是如此;无论如何,这似乎合乎逻辑。

关于php - 增加 PHP 内存限制(Apache、Drupal6),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1386815/

相关文章:

php - 即使我们交换它们,如何从两个数字生成相同的随机字符串?

php - 我怎样才能理顺 Laravel blade @extends 的执行顺序?

php - 如何绕过php中的最大执行时间?

regex - htaccess 自动检测域名

php - (ZeroMQ 安装失败) zmq.so : undefined symbol: zend_new_interned_string

html - 如何用一些标签包围 Drupal View ?

drupal - Beanstalkd 中的优先级是否可以跨队列/管道工作?

php - 使用 PHP EHLO 进行 SMTP 验证

apache - tomcat是否可以通过过滤主机别名进行ssl重定向?

drupal - Drupal 字符串中的 @(at 符号)