我想让第三方PHP应用程序访问Yii2用户数据(HumHub),并试过这个:
function getUserId() {
require_once('../protected/vendor/yiisoft/yii2/Yii.php');
$yiiConfig = require('../protected/config/common.php');
(new humhub\components\Application($yiiConfig));
$user = Yii::$app->user->identity;
return $user;
}
这不起作用。在new humhub\components\Application($yiiConfig)
之前没有错误,但第三方应用程序中断时没有抛出任何错误,并且该函数不会返回任何内容。
我确实发现this solution不起作用。
是否有理由不起作用或是否有正确获取Yii2用户数据的替代解决方案?
答案 0 :(得分:0)
这是在HumHub V1.0中如何做到的
require_once('../protected/vendor/yiisoft/yii2/Yii.php');
$config = yii\helpers\ArrayHelper::merge(
require('../protected/humhub/config/common.php'),
require('../protected/humhub/config/web.php'),
(is_readable('../protected/config/dynamic.php')) ? require('../protected/config/dynamic.php') : [],
require('../protected/config/common.php'),
require('../protected/config/web.php')
);
new yii\web\Application($config); // No 'run()' invocation!
现在我可以获得$ user对象:
$user = Yii::$app->user->identity;
答案 1 :(得分:0)
确实应该抛出错误,但是,PHP的错误设置可能会被覆盖或设置为不显示错误。
您调用未定义的对象Yii::$app->user->identity
。原因是documentation,因为你还没有初始化Yii对象。所以你的代码应该如下:
function getUserId() {
require_once('../protected/vendor/yiisoft/yii2/Yii.php');
$yiiConfig = require('../protected/config/common.php');
(new humhub\components\Application($yiiConfig)); // try to comment this line too if it does not work
// Add The Following Line
new yii\web\Application($yiiConfig); // Do NOT call run() here
$user = Yii::$app->user->identity;
return $user;
}