Php 在生产服务器上登录不需要';行不通

Php 在生产服务器上登录不需要';行不通,php,yii2,Php,Yii2,在本地服务器上可以工作,但当我尝试登录到生产服务器时,会收到以下消息: PHP Notice – yii\base\ErrorException Array to string conversion 1. in /var/www/html/vendor/yiisoft/yii2/web/User.php at line 240 2. in /var/www/html/vendor/yiisoft/yii2/web/User.php – yii\base\ErrorHandler::ha

在本地服务器上可以工作,但当我尝试登录到生产服务器时,会收到以下消息:

PHP Notice – yii\base\ErrorException
Array to string conversion    

1. in /var/www/html/vendor/yiisoft/yii2/web/User.php at line 240
2. in /var/www/html/vendor/yiisoft/yii2/web/User.php – yii\base\ErrorHandler::handleError(8, 'Array to string conversion', '/var/www/html/vendor/yiisoft/yii...', 240, ...) at line 240
3. in /var/www/html/common/models/LoginForm.php – yii\web\User::login(common\models\User, 2592000) at line 59
4. in /var/www/html/frontend/controllers/SiteController.php – common\models\LoginForm::login() at line 81

本地服务器和生产服务器上的文件是相同的。

yii2/web/User.php中的第240行是

$log = "User '$id' logged in from $ip with duration $duration.";
因此,请查看$id、$ip或$duration是否为数组。你在某个地方做错了什么


你能告诉我$\u服务器['REMOTE\u ADDR']是什么吗

这是因为用户数据库模型中的id字段不是主键。只需将PK约束添加到数据库中的user->id字段

从数据库控制台:

ALTER TABLE `user` ADD PRIMARY KEY(`id`);

或者任何可视化工具,如phpMyAdmin,都有一个主键,可以从“结构”选项卡添加功能

谢谢你的回答。问题在于$id。在localhost上返回:41在服务器上返回:Array()1我做了以下更改:
die(print\r($id))
另外,当我将行更改为:
$log=“用户从$ip登录,持续时间为$duration”。
没有错误。但用户未登录。谢谢。如果您想在自己的脚本中扩展核心脚本,请不要修改它。搜索为什么$id是一个数组,你在某处有一个bug。谢谢。主键出现问题。
enableSchemaCache
db
config数组项中,如果设置为
true
则将其设置为
false
,这为我修复了它。不知道为什么id一开始不是主键。我猜是坏的db拷贝。