【问题标题】:Fatal Error - Allowed Memory - PHP致命错误 - 允许的内存 - PHP
【发布时间】:2018-07-30 01:47:24
【问题描述】:

这是我的代码:

    <?php
  $file = fopen('Lista_responsaveis.csv', 'r');
  $i=0;

  while (($line = fgetcsv($file)) !== FALSE)
  {
     $responsavel[$i]=$line[0];
     $i++;
 }
 fclose($file);

 unset($responsavel[0]);

 foreach ($responsavel as $item)
 {
    echo '</br>';
    include("email_gerente_conta.php");
 }

 ?>

它在我的浏览器中运行良好:http://174.30.255.100:88/call_email_gerente_conta.php

但如果我在我的 cdm 中这样做:

"C:\Program Files (x86)\iis\PHP\v5.6\php.exe" E:\site\call_email_gerente_conta.php

我收到此错误消息:致命错误:允许的 134217728 字节的内存大小已用尽(尝试分配 36 字节)在 E:\site\call_email_gerente_conta.php 第 8 行

我已经尝试将内存增加到 128m、512 和 1g,但仍然崩溃,我将避免使用“-d memory_limit=-1”,此错误消息指的是我的循环,但我不明白为什么它可以正常工作在我的浏览器上而不是在我的 cmd 中,为什么一个非常简单的代码和一个只有 3 行的 csv 需要这么多的内存请任何帮助

【问题讨论】:

  • 所以,基本上你的问题归结为为什么它在不同的环境中消耗不同的内存量,对吧?我可以猜到,但首先,您需要提供 MCVE!原因是没有它,你的问题就跑题了,其次猜测是不好的。
  • 嗨,Ulrich,我只想让我的代码在我的 cmd 上运行,就像在我的浏览器上运行一样(如果你能回答这种差异的原因,对我来说是一个加分项)。你能告诉我什么是MCVE吗?如果你不能帮助,像丹尼斯,请不要浪费你和我的时间。谢谢

标签: php cmd command-line-interface


【解决方案1】:

您需要更改 php.ini

并更改允许的空间数。

链接是here

如果您有权指定服务器(Ubuntu 或 Windows) 您需要更改 Apache/confphp/conf

中的指定文件

可以是herehere

【讨论】:

  • 嗨 Denis,当我使用参数 -d memory_limit=512M 或 1024M 时,falta 错误消息随之改变,从致命错误:允许的内存大小为 134217728 到致命错误:允许的内存大小为 1073741824 字节,但以防万一我在我的 php.ini 中更改了相同的结果,并且我不使用 apache,我使用 iis。
  • 我建议您尝试允许 5000M 或更多,看看会发生什么。但是你可以看到同样的错误,我认为here。我建议 php 使用 Apache,这在 witch os、UbuntuWindows 上并不重要,但是对我来说优先考虑的是 Ubuntu,个人推荐。
  • 我已经尝试过使用 1GB,但我无法使用 Apache,因为该服务器来自我的工作。
  • 5000M = 1G,对吗?如果可能,请尝试使用 5G。让我看看答案,我的意思是错误,如果它支持它。
  • 嗨丹尼斯,我尝试了一种新方法,为此我更改了我的代码(抱歉把我的代码放在这里):$row = 1; if (($handle = fopen("Lista_responsaveis.csv", "r")) !== FALSE) { while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $数=计数($数据);回声“测试1”; $行++; } fclose($句柄); } else { echo "测试 2";现在我的浏览器显示我 Test1 和我的 cmd Test2 !
猜你喜欢
  • 2015-04-22
  • 2023-03-20
  • 1970-01-01
  • 2011-07-12
  • 2017-12-13
  • 2015-02-17
  • 2023-04-10
  • 2015-09-18
  • 2023-04-03
相关资源
最近更新 更多