在运行PHP程序时,常会遇到“Fatal Error: Allowed memory size of xxxxxx bytes exhausted”的错误。这意味着PHP脚本使用了过多的内存,超出了系统允许的最大内存限制。为了解决这个问题,我们需要检查程序是否分配了过多的内存。如果程序没有问题,可以通过以下方法增加PHP的内存限制(memory_limit)。
1. 检查php的内存限制值:为了查看这个值,你可以创建一个空的php文件,比如view-php-info.php,并将以下代码粘贴进去。将这个文件放到你的PHP主机上,然后在浏览器中访问它。这样你就可以看到PHP环境配置的信息,其中有关于'memory_limit'的部分。可以通过以下方法查看php的其他参数设置,不仅仅是memory_limit。
phpinfo();
?>
2. memory_limit应该设为多少?这完全取决于你的应用需求。例如,WordPress运行所需的核心代码需要32MB。Drupal 6要求这个值最低为16MB,并推荐设置为32MB。如果你安装了许多插件(plugins),特别是那些需要进行图像处理的模块,可能需要128MB或更高的内存。
3. 如何设置memory_limit:
方法1:php.ini
最简单或常用的方法是修改php.ini文件。首先找到对你的网站生效的php.ini文件。由于有多个地方可以设置php的参数,找到正确的配置文件并进行更改是首先要做的一步。如果你使用上面的方法创建了php文件来查看配置参数,可以找到'Loaded Configuration File'这一项。以下是一个示例:
- 对于Linux用户,可以通过执行'php -i | grep Loaded Configuration File'来找到对应的配置文件。
- 对于Windows用户,可以尝试修改你的php安装目录下的php.ini文件。
编辑php.ini文件,在其中找到'memory_limit'这一项。如果没有,可以在文件的末尾自己添加这个参数。以下是一些设置示例:
memory_limit=128M
你可以将128M改为任何你想设置的值。保存文件后,重启web服务器。如果你的web服务器是Apache,可以执行命令httpd restart。
有些情况下,你可能不被允许私自修改php.ini文件。例如,如果你购买了虚拟主机服务,但是服务提供商禁止你修改这个文件。那么,你可以考虑使用其他方法来增加memory_limit的值。