有一些免费空间对网站程序消耗内存做了限制,初学者在遇到Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 491520 bytes) in...这样的php错误提示时,应该怎样应对呢?
今天在使用http://wordpress.cn.gp搭建多站点时,遇到了kilu.de免费空间分配内存不足的情况。kilu.de免费空间给出的内存为32M限制,而wordpress3.3之后有些内核程序占用资源已经超过了33M,因此如果还在使用kilu.de免费空间,不得不把wordpress的版本降下来。wordpress3.2.1的占用内存大部分在28M,但仍然有些核心部分超过了32M,必须想办法解决这一问题,才能正常使用。即使采用了文章下面的方法,kilu.de免费空间的wordpress仍然在很多页面会出现文章开始的php错误提示:内存不够!
抛开kilu.de空间的情况不谈,我们来谈谈应对该问题的一般思路:
1、修改php.ini
一些主机空间支持php.ini,你可以将下面的代码拷贝到php.ini上传到空间
memory_limit=64M;
2、利用.htaccess增加虚拟空间的内存限制
在支持.htaccess的空间上传含有一行下面代码的.htaccess文件
php_value memory_limit 64M
3、为wordpress增加配置语句
在wordpress的wp-config.php文件中增加下面的一条语句
define('WP_MEMORY_LIMIT','64M');
4、单独php页面可以使用php函数解一时之需
如果只是某一个php文档出现了内存不足的情况,(当然不是在wordpress中,)可以在该文档的开头增加下面一句以调整内存限制。也可以在一个全局文档中增加,让所有的php文档都可享用
ini_set('memory_limit','64M');
5、改php调用和执行为html输出
要知道html代码永远比程序执行代码占用资源少。如果你的wordpress只是在某一个可数的页面出现调用时的内存不足,而且你可以直接用html代码将php文档中的函数代替的话,你完全可以模仿我的做法,把对应的php调用函数直接换为调用完的html代码。
在以上5种方法中,前4种都能做到一劳永逸,然而对于kilu.de免费空间则是惘然,kilu.de空间不能通过它们来增加执行内存,我相信还有一些免费的空间也可能存在这个问题,你要么选择第5种方法,要么换一个空间。我最后选择了第5种方法,对几个必须的页面进行了调整。你可以进入http://wordpress.cn.gp进行测试。