我遇到了免费开放式购物车模块的问题,希望能得到一些帮助。
使用导入/导出工具时,我收到以下错误
“致命错误:在第126行的/home3/haas12/public_html/breslovcenter.org/system/PHPExcel/Classes/PHPExcel/Style/Supervisor.php中,允许的内存大小为268435456字节(尝试分配25165824字节)”
我只有大约700个项目,我的xlsx文件只有291k,但它在错误消息中说256MB。
我创建了一个php信息文件,它位于: http://breslovcenter.org/phpinfo.php
任何人对如何解决此问题都有任何想法?任何帮助将不胜感激。我猜这个问题必须是由于一些错误导致内存泄漏。我有点卡住,不知道该怎么做。
答案 0 :(得分:0)
文件可能很小,但PHP使用大量内存/处理来打开excel文件。虽然它确实看起来像很多内存,但它因为出现这个问题而众所周知,你需要增加内存限制或找到更好的导入方式(还有很多其他导入方法,它们不太方便)
答案 1 :(得分:0)
错误消息:
致命错误:允许的内存大小为268435456个字节(尝试分配25165824个字节)......
这表示您的Apache服务器允许PHP的内存大小为268435456 bytes
(256 MB)。 Apache服务器可能打开的所有可能线程之间共享此内存。您的脚本正在尝试分配25165824 bytes
(24 MB)以上(但每个请求可能会有所不同,具体取决于加载文件大小)。
PHPExcel虽然是用于处理XLS(X)文件的优秀PHP扩展,但却有一个重要的缺点 - 需要大量资源,尤其是内存。在具有32或64 MB允许内存大小的共享主机上,甚至没有机会运行此扩展。
解决方案
php.ini
文件并搜索memory_limit
设置。现在应该是memory_limit 256M
- 将其更改为例如此值:memory_limit 350M
或甚至512M
如果您想完全确定将来不会发生这种情况。如果您可以使用ini_set()
指令从PHP脚本中修改PHP设置,那么仅在导入脚本中使用这可能更好,这样就不会为每个请求分配太多无用的内存: ini_set('memory_limit', '350M');
- 最好将此名称作为导入脚本中的第一行。答案 2 :(得分:0)
正如Jay Gilford所说,PHPExcel因此问题而闻名。您可以尝试:
编辑php.ini文件
如果您的网站托管在共享服务器上,或者您无权访问PHP配置,则需要修改两个' php.ini' OpenCart安装中的文件。第一个位于OpenCart安装的根文件夹中,第二个位于' / admin'夹。变化:
memory_limit = 64M;
要:
memory_limit = 256M;
如果您使用的是共享服务器,则可能会对您的提供商施加限制(根据经验1& 1约为80MB),这将超越这些“php.ini”#39;文件,在这种情况下,如果你想增加PHP内存限制,你可能需要升级到专用服务器或VPS。
增加服务器上的PHP内存限制
如果您可以访问服务器PHP配置,则可以通过控制面板或SSH直接在服务器上增加PHP内存限制。您很可能需要重新启动服务器才能使更改生效。
当然,删除一些旧产品可以解决问题并释放一些内存使用,但是一旦你恢复到同一级别,你将再次遇到问题。或者你可以尝试不同的扩展,这不是那么耗费内存,但是这个扩展的导入/导出功能似乎仍然是最好的。