Fatal error: Allowed memory size of 18874368 bytes exhausted (tried to allocate 1481725 bytes) in __/public_html/includes/database.inc on line 224
每次我尝试编辑以下页面时,我都会在Drupal 6中出现此错误(抱歉xx's):
hxxp://chipkin.com/fs-8700-125-stulz
hxxp://chipkin.com/fs-8700-47-dnp-30
hxxp://chipkin.com/fs8700-14-ge-mark-iv-speedtronic
hxxp://chipkin.com/fs8700-74-veeder-root-serial-driver
我们在共享主机上,所以我没有访问php.ini文件来分配更多内存,但我很确定这不是造成问题的原因。有什么想法吗?
答案 0 :(得分:2)
绝对是一个内存问题 - 你只需18兆字节的内存就可以运行Drupal站点。
您的长期解决方案是更改主机 - 有很多主机允许您调整php.ini(在限制范围内)。 Bluehost.com就是一个例子。
可能的短期解决方案是从modules
目录中删除未使用的模块。即使它被禁用,每个模块也会占用一点内存。
缓存和禁用statistics
之类的东西也很好,但如果您在基本页面编辑中遇到内存问题,它们将无济于事。
答案 1 :(得分:2)
您可以通过.htaccess
指定内存限制尝试将以下行添加到站点根目录中的.htaccess文件中:
php_value memory_limit 32M
答案 2 :(得分:1)
我也在共享主机上。这是我在其中一个Drupal域根文件夹中创建的PHP.INI:
[PHP]
memory_limit = 40M;
upload_max_filesize = 20M;
post_max_size 20M;
max_execution_time = 200;
max_input_time = 200;
我没有任何全球限制的问题。我不确定主机是否可以禁用或覆盖本地PHP.ini - 我的不是,它应该值得一试。
答案 3 :(得分:0)
我对Drupal并不熟悉,但有问题的页面试图从数据库中获取大量数据吗?像整个桌子的SELECT *
?这可以解释为什么一个电话试图分配如此多的内存。
更改主机是一种选择,但是现在可能值得一看,是否可以采取措施来限制从数据库请求的数据。
不幸的是,错误消息并没有太多告诉您导致问题的特定请求 - 因为生成db请求的代码位于db库类中。如果你可以做任何类型的堆栈跟踪,那将有所帮助。
答案 4 :(得分:0)
编辑settings.php(通常在sites / default中)并添加(或修改):
ini_set('memory_limit', '96M');
......或者你需要。