我正在尝试在共享托管服务器上运行 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/