在运行PHP程序,常会遇到“Fatal Error: Allowed memory size of xxxxxx bytes exhausted”的错误, 这意味着PHP脚本使用了过多的内存,超出了系统对其设置的允许最大值。要解决这个问题,首先需要查看你的程序是否分配了过多的内存,在程序没有问题的情况下,你可以通过以下介绍的方法来增加PHP的内存限制(memory_limit)。
首先要检查php的内存限制值,为了查看这个值,先要建立一个空的php文件,比如view-info.php,将下面这段代码粘贴到里面: <?php phpinfo(); ?> 把这个脚本放到你的Web服务器上,然后在浏览器中调用它,这时会显示你的PHP环境配置的信息,其中有一部分是关于“memory_limit”的, 如附图一。当然你可以用这种方法来查看php的其他参数设置,而不仅仅是memory_limit。
memory_limit应该设为多少会比较合适呢?这个取决于你应用的要求,比如Wordpress需要32MB,Drupal 6则要求最小为16MB,推荐设置为32MB。如果你安装了不少的插件(plugins),尤其是进行图像处理的模块,那么你可能需要128MB或更高的内存。
设置memory_limit有以下几种方法:
方法1: php.ini,最简单常用的方法是修改php.ini 首先找到对你的网站生效的php.ini文件,到正确的配置文件,并进行更改是首先要做的一步。如果你用上面的方法来查看配置参数,则你可以找到“Loaded Configuration File”这一项。对于Linux用户,可以执行“php -i | grep Loaded Configuration File”来找到对应的配置文件,而对于Windows用户,则可以尝试修改你的php安装目录下的php.ini。然后在php.ini中,找到“memory_limit”这一项,如果没有,你可以在文件的尾部自己增加这个参数,例如: memory_limit = 128M; 然后保存文件即可。最后别忘了重启web 服务器让修改生效,如果web服务器使用Apache, 可以执行: httpd restart 注意如果你购买了虚拟主机服务,你的服务商可能会禁止你修改php.ini这个文件。
方法2: .htaccess 这种方法仅在php以Apache模块来执行时才有效,在网站的服务器的根目录下找到“.htaccess”文件,如果没有,可以自己创建一个。然后把以下配置放入其中: php_value memory_limit 128M ; 可以将128M改为你想设置的值
方法3: 运行过程中修改php的内存设置 在你的php脚本中增加以下代码即可: ini_set('memory_limit','128M'); 不过如果你使用的是虚拟主机,有可能会出现memory_limit值修改失败的结果。这时需要联系你的服务商看如何处理,通常他们限制了可以设置的最大值或者根本就不允许你修改。如果他们的环境无法满足你的要求,那么你可能要考虑换一个主机服务商。
|