内存大小限制为268435456字节已耗尽。

12

可能是重复问题:
Allowed memory size of X bytes exhausted

我正在处理一个相当大的数据库(87mb)导入,并使用php脚本执行此操作。在Ubuntu Lucid上的Apache安装中进行所有操作。

当我运行脚本几分钟后,我收到以下错误:

Allowed memory size of 268435456 bytes exhausted 

我已经在php.ini文件中将memory_limit更改为2GB并重新启动了Apache。之后我检查了phpinfo(),发现memory_limit设置为“2048M”,所以一切都正常。

但是当我重新启动脚本时,我收到相同的错误,即内存限制达到256MB。

我错在哪里了?


展示一些代码。我们需要知道脚本中发生了什么。 - bcosca
1
脚本是WordPress导入器,数据库文件是WML文件(WordPress导出文件)。 - Pennywise83
2
你将 memory_limit 更改为 1GB,但 phpinfo() 显示为 2GB,所以一切都正常吗? - Déjà vu
1
抱歉,那是一个打字错误。我已将'memory_limit'更改为2048M,而不是1GB。 - Pennywise83
1
phpinfo() 函数显示 php.ini 文件的位置是什么?您修改了该文件还是其他文件? - mhitza
3个回答

14
如果您使用的脚本是从别人那里借来的,请确保没有 ini_set('memory_limit', '256M')。否则,无论您在php.ini文件中做了任何更改,都会产生与您看到的完全相同的效果。

2

Ubuntu有两个php.ini文件,一个是给apache使用的,另一个是给命令行使用的。
你确定你编辑的是正确的那个吗?
命令行使用的php.ini通常在/etc/php5/cli/php.ini中。


还有一个'/etc/php5/cli/php.ini'文件,其中memory_limit被设置为'-1'。 - Pennywise83
无论如何,我是通过 Web 浏览器运行脚本的,而不是通过命令行。 - Pennywise83

0

很可能使用了错误的php.ini文件。

在相同的phpinfo()输出中,您可以检查到底使用了哪个文件,搜索“Configuration File”即可。

您可以从您实际使用的脚本中调用phpinfo()函数,以确保获取与您的脚本完全相同的设置(不同的虚拟主机、路径等可能使用不同的设置)。


我已经在脚本的头部添加了phpinfo(),它显示相同的内容... memory_limit设置为2048M,但我仍然收到错误消息。我无法弄清楚为什么会发生这种情况... - Pennywise83

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接