LINUX系统对大小写敏感之重写数据库配置文件之后无法找到

问题咨询 · Tudou · 于 2年前 发布 · 1083 次阅读

我新建模块的时候服务层查询数据库,我没有使用原来/vendor/fancyecommerce/fecshop/xx/module/xx.php文件,而是新建了一个数据库文件/var/html/www/fecshop/appadmin/local/local_models/mysqldb/xx.php,在本地运行的时候没有报错。但是我上传到服务器就出状况了。 所有的都报同一个错误:

错误
Http status: 500 Internal Server Error
ajaxOptions: error
thrownError: Internal Server Error
PHP Fatal Error 'yii\base\ErrorException' with message 'Class '\appadmin\local\local_models\mysqldb\product\customer' not found' in /var/html/www/fecshop/vendor/fancyecommerce/fecshop/yii/Yii.php:42

Stack trace:
#0 [internal function]: yii\base\ErrorHandler->handleFatalError()
#1 {main}
共收到 18 条回复
Fecmall#12年前 0 个赞

是不是配置没有上传? 重写部分的配置文件是不是漏了?

Tudou#22年前 0 个赞

不应该啊 我是打包上传的@Terry #1楼

Tudou#32年前 0 个赞

admin\config中的配置文件一个都没少。

Fecmall#42年前 0 个赞

报错信息为:

'Class '\appadmin\local\local_models\mysqldb\product\customer' not found'

看一下这个文件是否存在,是不是大小写的问题? customer 应该是大写开头 Customer 吧?

你本机开发环境是win? 不要用win,经常出现开发没问题,线上出问题的情况。

Tudou#52年前 0 个赞

文件存在,而且也是大写,我是用的win, 环境都搭在win上的,如果要换还得装虚拟机,重新搭建环境。现在就想弄个测试版出来先看看。

感觉是某个配置文件的问题,因为每个都是报的同样的错误,只是文件名不一样而已。

Fecmall#62年前 0 个赞

@Tudou #5楼 那你的配置文件里面为什么是小写?

'Class '\appadmin\local\local_models\mysqldb\product\customer' not found'

Tudou#72年前 0 个赞

因为我是模仿的其他的写法写的, 我以为路由方法就是这样。:frowning:

这个配置的时候 model中Xxx.php首字母大写,在服务层调用时,'\appadmin\local\local_models\mysqldb\Xxx'也应该这样吗?因为我是模仿的其他文件的,而且写出来在本地也能访问。

Fecmall#82年前 0 个赞

@Tudou #7楼 仔细看 #6 的内容

Tudou#92年前 0 个赞

看过了 我尝试改过。但是报更多的错了,报的是代码有问题,但是我在本地改过之后运行却不影响。。有点头大,服务器好像linux的,大小写比较严谨,我再看看吧 谢了。等我测试成功再来回帖。

Tudou#112年前 0 个赞

我在控制器测试了,返回一个数值是可以的,就是通过调用服务层的时候有问题。 bolck 层调用common配置:** $this->_service = Yii::$service->sitesmanage; ** common配置在 ** fecshop/common/config/fecshop_local_services/Sitesmanage.php **内容如下:

return [
'sitesmanage' => [
    'class' => 'appadmin\local\local_services\Sitesmanage',
],
];

然后对应的service层内容大致如下:

class Sitesmanage extends Service
{
//站点表
protected $_sitesModelName    = '\appadmin\local\local_models\mysqldb\Shopconfig';
protected $_sitesModel;
//订单表
protected $_orderModelName    = '\appadmin\local\local_models\mysqldb\order\Orderinfo';
protected $_orderModel;

public function __construct(){
    list($this->_sitesModelName,$this->_sitesModel)       = \Yii::mapGet($this->_sitesModelName);
    list($this->_orderModelName,$this->_orderModel)       = \Yii::mapGet($this->_orderModelName);
}
}

最后的数据库**fecshop/appadmin/local/local_models/mysqldb/order/OrderInfo.php**内容:

use yii\db\ActiveRecord;

class OrderInfo extends ActiveRecord
{
public static function tableName()
{
    return "sales_flat_order";
}
}

报错信息则如下:

Http status: 500 Internal Server Error

ajaxOptions: error

thrownError: Internal Server Error

PHP Fatal Error 'yii\base\ErrorException' with message 'Class '\appadmin\local\local_models\mysqldb\order\Orderinfo' not found'
in /var/html/www/fecshop/vendor/fancyecommerce/fecshop/yii/Yii.php:42
Stack trace:
0 [internal function]: yii\base\ErrorHandler->handleFatalError()
1 {main}
Fecmall#122年前 1 个赞

脑子不长记性,榆木!

上面说了多注意大小写的问题,你看:

fecshop/appadmin/local/local_models/mysqldb/order/OrderInfo.php

你的报错信息是:\appadmin\local\local_models\mysqldb\order\Orderinfo

你看OrderInfoOrderinfo 大小心的问题,Info部分是大写。

榆木。找不到文件 not found,要么是少了字符,要么是字符大小写问题!!!

Fecmall#132年前 1 个赞

protected $_orderModelName = '\appadmin\local\local_models\mysqldb\order\Orderinfo'; 改成: protected $_orderModelName = '\appadmin\local\local_models\mysqldb\order\OrderInfo';

Tudou#142年前 1 个赞

是 教训的是,我深刻反省。

Tudou#152年前 0 个赞

我是榆木,我笨,但是大哥能不能看在我才上班1个月的份上,不要生我气了。 问题已经解决了 就是大哥说的这个方法。很管用,我其他几个地方对比了一下,也有相似的错误。正在修改中。 感谢。

Fecmall#162年前 0 个赞

@Tudou #15楼 抱歉,脾气有时候搂不住,因为上面说了好几遍了。

回答这些问题很无趣,况且回答了好几遍,发帖的人看了不思考,就上火。

相互理解吧。

Tudou#172年前 1 个赞

我体谅你,毕竟每天那么多人都有问题要问你,有时候烦躁是很正常的。说出来你可能不信,我其实核对过的。:pensive:哈哈哈,感谢感谢

Fecmall#182年前 0 个赞

发帖前,看一下发帖规则:http://www.fecshop.com/topic/624 @Tudou #17楼

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