原文:http://blog.itechol.com/space-33-do-blog-id-6815.html
故障现象
在运行PHP程序,通常会遇到“Fatal Error: Allowed memory size of xxxxxx bytes exhausted”的错误, 这个意味着PHP脚本使用了过多的内存,并超出了系统对其设置的允许最大内存。
解决这个问题,首先需要查看你的程序是否分配了过多的内存,在程序没有问题的情况下,你可以通过一下方法来增加PHP的内存限制(memory_limit)。
检查php的内存限制值
为了查看这个值,你需要建立一个空的php文件,比如view-php-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
1. 首先找到对你的网站生效的php.ini文件 由于有多个地方都可以设置php的参数,找到正确的配置文件,并进行更改是首先要做的一步。如果你上面的方法建立了php文件来查看其配置参数,则你可以 找到“Loaded Configuration File”这一项,以下是个例子:
对于Linux用户,你可以通过执行“php -i | grep Loaded Configuration File”来找到对应的配置文件。而Windows用户,你可以尝试修改你的php安装目录下的php.ini。
2.编辑php.ini 在php.ini中,找到“memory_limit”这一项,如果没有,你可以在文件的尾部自己增加这个参数。以下是一些设置范例
memory_limit = 128M ; 可以将128M改为任何你想设置的值
保存文件
3.重启web 服务器 如果是web服务器使用Apache, 则执行:
httpd restart
有些情况下,你可能不被允许私修改php.ini。比如如果你购买了虚拟主机服务,但是你的服务商确禁止你修改这个文件。那么,你可以需要考虑用其他方法来增加memory_limit的值。
方法2: .htaccess
说明: 这种方法只有在php以Apache模块来执行时才生效。 在你的网站的根目录下找到“.htaccess”文件,如果没有,可以自己创建一个。然后把以下配置放入其中
php_value memory_limit 128M ; 可以将128M改为任何你想设置的值
方法3: 运行时修改php的内存设置
在你的php代码中增加以下命令行即可。
ini_set('memory_limit','128M');
memory_limit修改失败
如果你使用虚拟主机,有可能会出现memory_limit的值修改失败。这个需要联系你的服务商看怎么处理,通常他们限制了可以设置的最大值或者根本就不允许你修改。如果他们的环境真的无法满足你的要求,那么你可能要考虑换一个主机服务商。
可能是分词程序的问题。只要搜索的字段达到十个汉字以上,就会出现诸如以下的错误
Fatal error: Allowed memory size of 2345643 bytes exhausted
上网找了方法。有3种办法。
1.直接修改PHP.INI
memory_limit = 16M ;
但是我修改了没有用。据说是要重启服务器的。但是很显然。我的 是虚拟主机。所以有独立主机的可以这样修改。
2.修改.htaccess
php_value memory_limit 16M
修改后直接出现500错误。可能是主机商限制
3.直接在程序页面上修改。
ini_set(’memory_limit’, ‘16M‘);
效果立竿见影。搞定。
相关推荐
部分指令还允许指定数值,例如`memory_limit`用于设置PHP脚本的最大内存消耗。 接着,我们关注一些重要的配置段落。"PHP核心"部分包含了PHP运行时的基础设定,如`extension_dir`指定了扩展库的位置,`date.timezone...
2. 内存管理:memory_limit 指令设定了一个脚本可以使用的最大内存。合理设置可以避免内存溢出问题,但也不能设置过高以免消耗过多系统资源。 3. 文件上传:upload_max_filesize 和 post_max_size 设置了允许上传...
可以在php.ini中调整`memory_limit`设置,例如将其设置为`512M`: ```ini memory_limit = 512M ``` 另外,如果你使用的是Composer管理依赖,`vendor`目录包含的是所有安装的Composer包,包括PhpSpreadsheet。确保...
- **memory_limit**: 设置单个脚本的最大内存使用量。超出这个限制时,脚本会被终止。 #### 总结 通过以上分析可以看出,`php.ini` 文件对于 PHP 应用程序的稳定性和安全性至关重要。正确配置这些选项可以帮助...
3. **memory_limit**:设定脚本可以使用的最大内存,合理设置能防止因内存耗尽导致的脚本崩溃。 4. **max_execution_time**:设置脚本最大执行时间,防止无限制的运行时间占用服务器资源。 5. **post_max_size** ...
可以通過修改 php.ini 文件中的 memory_limit 參數來增加 PHP 的内存限制。例如,將 memory_limit 設定為 128M,即: `memory_limit = 128M` 這種方法需要重启服务器,對虛擬機有限制。 2. 使用 ini_set 函數 ...
3. **memory_limit**: 设置PHP脚本可以使用的最大内存,根据实际需求调整,避免内存溢出。 4. **post_max_size**和**upload_max_filesize**: 分别限制POST数据和上传文件的大小,对上传功能尤为重要。 5. **date....
如果程序逻辑无误且仍然出现内存溢出的问题,那么增加`memory_limit`是必要的。你可以创建一个名为`view-php-info.php`的空PHP文件,然后输入`<?php phpinfo(); ?>`,上传到Web服务器并访问该文件。在显示的PHP信息...
This is php.ini-development INI file. ;;;;;;;;;;;;;;;;;;; ; Quick Reference ; ;;;;;;;;;;;;;;;;;;; ; The following are all the settings which are different in either the production ; or development ...
- **memory_limit**: 设置每个PHP脚本的最大可用内存,超出此限制脚本将被终止。 - **upload_max_filesize**: 设置上传文件的最大大小,这直接影响到用户可以通过表单上传的文件大小。 ##### 错误处理 - **error_...
其次,内存管理部分的`memory_limit`设置限制了PHP脚本可以使用的最大内存,合理设定可以防止资源耗尽导致的服务器崩溃。`post_max_size`和`upload_max_filesize`则限制了通过POST方法上传文件的最大大小,对于处理...
1. `memory_limit`:设置脚本可以使用的最大内存,这对于处理大数据或运行内存消耗大的脚本至关重要。 2. `error_reporting` 和 `display_errors`:控制错误报告的级别和是否在页面上显示错误信息,这对调试很有帮助...
memory_limit = 128M ``` #### 配置变量详解 1. **Engine**: 控制 PHP 引擎的状态,通常应保持为 `On`,除非特殊调试需求。 ```ini engine=On ``` 2. **Short Open Tag**: 控制是否启用短标记 `<?>`,对于代码...
例如,`memory_limit`指令控制脚本可以使用的最大内存,`display_errors`决定是否在浏览器中显示错误信息,`upload_max_filesize`限制了可上传文件的最大大小。 为了确保PHP应用程序的最佳性能和安全性,开发者和...
3. `memory_limit` - PHP脚本可使用的最大内存,对于处理大ZIP文件时可能需要增加。 4. `max_execution_time` - 脚本执行的最大时间,处理大型ZIP文件可能需要更多时间。 总的来说,这个压缩包可能是一个包含用于...
- `memory_limit`:设定脚本运行的最大内存限制,合理设置能避免内存溢出。 - `max_execution_time`:限制脚本运行时间,防止无限循环或长时间运算。 在覆盖现有的`php.ini`前备份原文件是非常明智的,以防新配置...
- `memory_limit`: 设置PHP脚本可使用的最大内存。 - `error_reporting`: 控制错误报告级别。 - `display_errors`: 显示或隐藏错误信息。 - `upload_max_filesize`: 设置允许上传的最大文件大小。 - `post_max_size`...
4. `memory_limit`:设定脚本可以使用的最大内存,例如`128M`。 5. 数据库连接设置:如`mysqli.default_socket`或`pdo_mysql.default_socket`用于指定MySQL的套接字路径,以便PHP与MySQL通信。 提到的"eclipse"是一...
- `memory_limit`: 设置每个脚本可使用的最大内存,防止内存耗尽问题。 - `post_max_size`: 限制POST请求的数据大小,与上传文件大小有关。 - `upload_max_filesize`: 允许上传文件的最大尺寸。 2. **文件上传**...