当前位置: 首页 > 知识库问答 >
问题:

无法清除的Magento系统日志错误

闻人思聪
2023-03-14

我的系统有两个问题。记录我正在解决一些问题。该网站似乎运行良好,但我非常希望从日志中删除这些正在进行的错误。

注意:未定义变量:order in/var/www/。。。在线17

// line 17
$merchantnumber = $standard->getConfigData('merchantnumber', $order ? $order->getStoreId() : null);

警告:在/var/www/…中被零除。。。在线267

// line 267
"vat" => (float)round((string)((round($order->getBaseShippingInclTax(),2)-round($order->getBaseShippingAmount(),2))/round((string)$order->getBaseShippingAmount(),2))*100, 2)

更新

// line 258-281 
                $items = $order->getAllItems();
    foreach ($items as $itemId => $item)
    {
        $invoice["lines"][] = array
        (
            "id" => $item->getSku(),
            "description" => $item->getName(),
            "quantity" => round($item->getQtyOrdered(), 0),
            "price" => $item->getBasePrice()*100,
            "vat" => (float)round((string)((round($item->getBasePriceInclTax(),2)-round($item->getBasePrice(),2))/round((string)$item->getBasePrice(),2))*100, 2)
        );
    }

    $invoice["lines"][] = array
    (
        "id" => $order->getShippingMethod(),
        "description" => $order->getShippingDescription(),
        "quantity" => 1,
        "price" => $order->getBaseShippingAmount()*100,
        "vat" => (float)round((string)((round($order->getBaseShippingInclTax(),2)-round($order->getBaseShippingAmount(),2))/round((string)$order->getBaseShippingAmount(),2))*100, 2)
    );

    return json_encode($invoice);
}

我之前发布了错误的代码对不起,我在查看错误日志时感到困惑,因为相同的(Devider)错误出现在商品和订单部分

共有3个答案

史商震
2023-03-14

通知不是错误。您可以选择忽略它,也可以使用isset检查变量是否存在:

 ...er', isset($order) ? $...

应始终避免被零除,因为答案通常是未定义的(至少在数学上是未定义的)。在尝试除法之前,请检查分母是否为零。

郭修平
2023-03-14

在第一种情况下,您可以尝试将该行更改为

$merchantnumber = $standard->getConfigData('merchantnumber', (isset($order) && $order) ? $order->getStoreId() : null);

在第二种情况下,如果订单金额为美元,我无法准确地说出“vat”的值-

if (!$order->getBaseShippingAmount()) {
   return;
}

添加到第267行上方的某个位置,但如果没有看到代码,就很难确定。

陆洛城
2023-03-14

不幸的是,Magento代码似乎经常依赖于PHP对html" target="_blank">逻辑错误的容忍度,这被视为注意事项。

 $merchantnumber = $standard->getConfigData('merchantnumber', $order ?
   $order->getStoreId() : null);

如果未设置$订单,我们希望使用NULL而不是订单的存储Id:

 $merchantnumber = $standard->getConfigData('merchantnumber',
   isset($order) ? $order->getStoreId() : null);

在第二个文件中:

更新检查您是否指的是$order$Item。如果它在循环中,它可能是后者。

"vat" => (float)round((string)((round($item->getBaseShippingInclTax(),2)-round($item->getBaseShippingAmount(),2))/round((string)$item->getBaseShippingAmount(),2))*100, 2)

增值税%从ShippingInclTax(即ShippingAmount增值税)中反算得出。仅当getBaseShippingAmount()为零时,计算才会崩溃。

为了应对这种情况,我们应该:

 'vat' => (0 == round($item->getBaseShippingAmount(),2)) ? 0 :
          (float)round((string)(
 (round($item->getBaseShippingInclTax(),2)
 -round($item->getBaseShippingAmount (),2)
 )/round((string)$item->getBaseShippingAmount(),2)
 )*100,2),

...我对所有这些四舍五入不太满意,但它们很可能存在,这样打印出来的账户就可以“检查”到最后一位小数,避免出现奇怪的结果,例如10.33 10.33 9.33=30.00而不是29.99。

我会写

 'vat' => (0 == $item->getBaseShippingAmount()) ? 0
        : round(
             100.0*(
               $item->getBaseShippingInclTax()/$item->getBaseShippingAmount()
               -1.0
             )
          ,2),

但即使在数学上更合理,我担心结果可能与Magento在其他地方打印的结果不匹配。

如果您在循环中使用$订单(意味着无论项目是什么,您都有相同的值),最好在循环之前计算增值税,然后在循环中使用它。

 类似资料:
  • 作为最核心的模块之一, Nutz的日志信息已经相当完善,看懂Nutz的日志,也是了解Nutz工作方式的核心途径之一.

  • THE LOGGING SYSTEM 对于任何 Linux 用户,了解日志文件的使用是非常重要的。日志文件存储关于操作系统和应用程序运行时发生的事件的信息,包括任何错误和安全警报。您的系统将根据我将在本章中介绍的一系列规则自动记录信息。 作为黑客,日志文件可以跟踪目标的活动和身份。但是它也可以是你自己在别人系统上的活动的踪迹。因此,黑客需要知道他们可以收集什么信息,以及可以收集关于他们自己的行为和

  • 系统日志文件概述 文件 描述 /var/log/messages 大多数系统日志消息记录在此处。例外是与身份验证、电子邮件处理相关的定期运行作业的消息以及调试相关的消息。 /var/log/secure 安全和身份验证相关的消息和错误的日志文件。 /var/log/maillog 与邮件服务器相关的消息的日志文件。 /var/log/cron 与定期执行任务相关的日志文件。 /var/log/bo

  • 本文向大家介绍mysql清除log-bin日志的方法,包括了mysql清除log-bin日志的方法的使用技巧和注意事项,需要的朋友参考一下 前一阵子工作项目上的事情忙的焦头烂额,最近要进行部门调整将要去做新的项目。又要学习很多新的知识了,还是很兴奋激动的。今天下班回来查看了一下VPS状态,发现VPS的空间只剩下了1G多!第一反应是被入侵了,但是看了一下log并没有发现什么异常的登录,加上平时基本都

  • 清除系统缓存 初衷 本身 Linux 有比较成熟的内存管理机制,但是不免也是会抽风的,有些程序在被 kill 掉之后系统内存依然没有大的变化,这时候就需要手动清除。 清除缓存 官网说明:http://www.kernel.org/doc/Documentation/sysctl/vm.txt 先查看目前系统内存使用情况:free -m 同步缓存数据到硬盘:sync 开始清理:echo 3 > /p

  • sp_clear_cache() 功能: 清除缓存 参数: 无 返回: 无 <?php sp_clear_cache();//无返回值 ?>