Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在使用Apache2切换到FastCGI后,为什么Drupal页面会给我一个致命的内存错误?_Php_Drupal - Fatal编程技术网

Php 在使用Apache2切换到FastCGI后,为什么Drupal页面会给我一个致命的内存错误?

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

我的网站一直运行良好,直到我按照这个指南建立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()时,它表示:

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设置不正确。固定:)