Php 在使用Apache2切换到FastCGI后,为什么Drupal页面会给我一个致命的内存错误?
我的网站一直运行良好,直到我按照这个指南建立mod_fcgid和php5 我的php.ini在每个地方都有96MB的内存限制。即使在刷新缓存并禁用引用的模块后,“我的网站”(即“面板/视图”)的首页仍然显示: 致命错误:第146行的/var/www/rvr/sites/all/modules/date/date/date.theme中允许的内存大小为16777216字节(尝试分配122880字节) 然而,我的站点的其他部分仍然可以工作,最值得注意的是Drupal调整模块,它指出我的内存限制是96MB。该站点还有更多内存密集型部分仍在工作。在完成上述指南之前,我对Boost模块进行了研究,但它被禁用,还有许多模块只是为了让它重新上线 我使用Ubuntu 10.04在一个有386MB ram的主机VPS上设置了这个LAMP 当我在drupal根目录中运行phpinfo()时,它表示:Php 在使用Apache2切换到FastCGI后,为什么Drupal页面会给我一个致命的内存错误?,php,drupal,Php,Drupal,我的网站一直运行良好,直到我按照这个指南建立mod_fcgid和php5 我的php.ini在每个地方都有96MB的内存限制。即使在刷新缓存并禁用引用的模块后,“我的网站”(即“面板/视图”)的首页仍然显示: 致命错误:第146行的/var/www/rvr/sites/all/modules/date/date/date.theme中允许的内存大小为16777216字节(尝试分配122880字节) 然而,我的站点的其他部分仍然可以工作,最值得注意的是Drupal调整模块,它指出我的内存限制是96
System Linux Rogueroses 2.6.32.12-rscloud #26 SMP Mon May 17 12:35:34 UTC 2010 x86_64
Build Date May 21 2010 06:23:44
Server API CGI/FastCGI
Virtual Directory Support disabled
Configuration File (php.ini) Path /etc/php5/cgi
Loaded Configuration File /etc/php5/cgi/php.ini
Scan this dir for additional .ini files /etc/php5/cgi/conf.d
additional .ini files parsed /etc/php5/cgi/conf.d/apc.ini, /etc/php5/cgi/conf.d/gd.ini, /etc/php5/cgi/conf.d/mcrypt.ini, /etc/php5/cgi/conf.d/mysql.ini, /etc/php5/cgi/conf.d/mysqli.ini, /etc/php5/cgi/conf.d/pdo.ini, /etc/php5/cgi/conf.d/pdo_mysql.ini
PHP API 20041225
PHP Extension 20060613
Zend Extension 220060519
Debug Build no
Thread Safety disabled
Zend Memory Manager enabled
IPv6 Support enabled
Registered PHP Streams https, ftps, compress.zlib, compress.bzip2, php, file, data, http, ftp, zip
Registered Stream Socket Transports tcp, udp, unix, udg, ssl, sslv3, sslv2, tls
Registered Stream Filters zlib.*, bzip2.*, convert.iconv.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed
再往下
max_execution_time 30 30
max_file_uploads 50 50
max_input_nesting_level 64 64
max_input_time 60 60
memory_limit 96M 96M
当我加载Drupal页面时,top命令给出:
6944 rvr 20 0 185m 42m 31m D 3 11.4 0:01.10 php
2295 mysql 20 0 228m 24m 2128 S 0 6.7 0:57.68 mysqld
对于具有面板视图和许多其他模块的站点,96MB的内存较低。你应该把它增加到150-200磅。这将为您提供更多空间来使用高级内存消耗模块 虽然96MB对于一个普通站点来说是非常有用的,但是在Drupal中运行许多模块时它并不是看不见的 但是,错误表明它超过了16M,因此显然phpinfo()中所述的值没有正确加载 设置内存限制等值的最佳位置是vhost配置本身。 第二个最佳位置是.htaccess 第三个最佳位置是settings.php 我假设settings.php/或/in.htaccess中的值较低(16M)。最好是在vhost配置中设置它们,然后从其他位置删除它们
您可以通过devel.module在Drupal中看到可用的实际值,它有一个简单的php-info()页面。或者,您可以创建一个以PHP解析为过滤器的节点,并在其中插入phpinfo()。这将向您显示Drupal中可用的实际值。我没有更多的投票权,因此我将为这个答案指定一个虚拟+1。我可以问一个后续问题吗?如果我将RAM增加到这个数量,但只有512MB可用(我升级了片),那么对于连接的客户端来说,什么是最佳的Apache设置?我读了一些关于pre_fork和worker设置的文章,但这些都超出了我的理解。我如何让很多人使用这个站点而不让服务器停止,内存限制在150-200mb?我已经重新启用了Boost,这使得事情变得更加迅速,但只适用于匿名用户。登录时有点慢。@Zachary:我所说的内存设置是服务器实际运行Drupal和所有模块所需要的。如果您想知道如何调整服务器,请访问serverfault.com。我不是一名服务器专家,但我可以说,对于匿名用户来说,速度之所以快,原因很简单,就是Drupal可以缓存整个页面,从而加快了速度。谢谢,原来我的/etc/php5/cli/php.ini设置不正确。固定:)