更新Shipping.php后整个Fecmall网站崩溃了

技术问题 · Dakai · 于 3年前 发布 · 1064 次阅读

首先感谢作者做出的这个项目,比网上其他的开源解决方案速度要快很多,好用很多。

我正在尝试自动生成运费模板,刚开始生成的Shipping.php格式可能有问题,运费选项没出来,于是我尝试修改格式,在添加几个'号和最后的;号之后,店铺网站就报错了,报错信息如下:

An Error occurred while handling another error:
yii\base\InvalidConfigException: Child Service [image] does not exist in fecshop\services\Application, you must config it!  in /var/www/fecmall/vendor/fancyecommerce/fecshop/services/Application.php:122
Stack trace:
#0 /var/www/fecmall/vendor/fancyecommerce/fecshop/services/Application.php(138): fecshop\services\Application->getChildService('image')
#1 /var/www/fecmall/vendor/fancyecommerce/fecshop/yii/views/errorHandler/exception.php(386): fecshop\services\Application->__get('image')
#2 /var/www/fecmall/vendor/yiisoft/yii2/base/View.php(348): require('/var/www/fecmal...')
#3 /var/www/fecmall/vendor/yiisoft/yii2/base/View.php(257): yii\base\View->renderPhpFile('/var/www/fecmal...', Array)
#4 /var/www/fecmall/vendor/yiisoft/yii2/web/ErrorHandler.php(270): yii\base\View->renderFile('/var/www/fecmal...', Array, Object(yii\web\ErrorHandler))
#5 /var/www/fecmall/vendor/yiisoft/yii2/web/ErrorHandler.php(127): yii\web\ErrorHandler->renderFile('@fecshop/yii/vi...', Array)
#6 /var/www/fecmall/vendor/yiisoft/yii2/base/ErrorHandler.php(135): yii\web\ErrorHandler->renderException(Object(yii\base\InvalidConfigException))
#7 [internal function]: yii\base\ErrorHandler->handleException(Object(yii\base\InvalidConfigException))
#8 {main}
Previous exception:
yii\base\InvalidConfigException: Object configuration must be an array containing a "class" or "__class" element. in /var/www/fecmall/vendor/yiisoft/yii2/BaseYii.php:368
Stack trace:
#0 /var/www/fecmall/vendor/fancyecommerce/fecshop/services/Application.php(115): yii\BaseYii::createObject(Array)
#1 /var/www/fecmall/vendor/fancyecommerce/fecshop/services/Application.php(138): fecshop\services\Application->getChildService('store')
#2 /var/www/fecmall/vendor/fancyecommerce/fecshop/components/Store.php(43): fecshop\services\Application->__get('store')
#3 /var/www/fecmall/vendor/yiisoft/yii2/base/Application.php(333): fecshop\components\Store->bootstrap(Object(yii\web\Application))
#4 /var/www/fecmall/vendor/yiisoft/yii2/web/Application.php(70): yii\base\Application->bootstrap()
#5 /var/www/fecmall/vendor/yiisoft/yii2/base/Application.php(279): yii\web\Application->bootstrap()
#6 /var/www/fecmall/vendor/yiisoft/yii2/base/BaseObject.php(109): yii\base\Application->init()
#7 /var/www/fecmall/vendor/yiisoft/yii2/base/Application.php(212): yii\base\BaseObject->__construct(Array)
#8 /var/www/fecmall/appfront/web/index.php(66): yii\base\Application->__construct(Array)
#9 {main}

这个是网站首页的报错,我打开appadmin后台,发现也有报错信息,使用页面提供的复制功能复制内容和上面一样,但有个严重的问题,页面报错的内容把数据库的配置暴露了,包括用户名和密码。

我试验的Shipping.php内容如下:

return [
  'shipping' => [
    'shippingCsvDir' => '@common/config/shipping',
    'shippingConfig' => ['free_shipping'=> [
                'label'=> '10-25 days, Available for orders over $XX',
                'name' => 'Free Shipping (HKRAM)',
                'formula' => '0',
                'country' => [ 
                    'type' => 'allow', 
                    'code' => [
'AT',
//这里有大约70个国家代码
'AE',

                    ]//这里漏了一个逗号,添加后还是没有出现运费选项
                ],
            ],
stardard_shipping' => [
  'label' => 'EMS (15-25 days)',
  'name' => 'EMS',
  'formula' => '[weight] *xx.xx + xx.xx' ,
  //xx.xx + xx.xx 是程序根据物流报价生成的数字,重量*报价+操作费用
  'country' => [
    'type' => 'allow',
    'code' => ['US',]
  ], 
  'weight' => [
    'min' => 0.001,
    'max' => 2.0,
  ],
],
stardard_shipping' => [
  'label' => 'EMS (15-25 days)',
  'name' => 'EMS',
  'formula' => '[weight] *xx.xx + xx.xx' ,
  //xx.xx + xx.xx 是程序根据物流报价生成的数字,重量*报价+操作费用
  'country' => [
    'type' => 'allow',
    'code' => ['MX',]
  ], 
  'weight' => [
    'min' => 0.001,
    'max' => 2.0,
  ],
],
//这里还有N个Standard_shipping配置,每个国家码一个,总文件有600多行
    ],
  ],
]//这里少了一个';'号,但我添加之后网站就崩溃了,不知道是否相关。

由于是程序自动生成,缩进没有调得很漂亮,不知道我这样针对每个国家设置一个或几个运费计算是不是产生错误的原因?还是格式不对?很奇怪居然整个网站都Crash了,很抱歉我并不了解Yii框架,所以一下子找不到解决方法。

另外,我把Shipping.php改回初始状态也没有解决问题,Shipping.php文件的权限没有问题。 Fecmall更新到最新的2.10.3也还是这样。

共收到 2 条回复
Fecmall#13年前 1 个赞

1.出了问题,不会先还原一下文件?

2.巴拉巴拉给你找找问题,如下:

 ],
stardard_shipping' => [

stardard_shipping左边把引号丢了!

Dakai#23年前 0 个赞

@Fecmall [#1楼](#comment1)

还原了啊……不过用的是文档里运费说明的内容,结果还是不行,今天早上重新composer了一个下来把里面的Shipping.php复制过去就行了

多谢多谢!

添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册
Your Site Analytics