Php Mediawiki错误:调用未定义的方法User::saveToCache()
我最近将mediawiki安装更新为1.30,现在正在处理更新过程中出现的插件错误 我最直接的错误是Mediawiki的RadiusAuthPlugin。尝试登录时,页面上显示以下错误,但登录成功: [3d3906e176c5476982ff8037] /MEDIAWIKI/index.php?title=Spezial:Login&returnto=Mainpage错误来自 第75行 /usr/srv/www/vhosts/HOSTNAME/htdocs ssl/MEDIAWIKI/extensions/RadiusAuthPlugin/RadiusAuthPlugin.php: 调用未定义的方法User::saveToCache() 回溯: #0/usr/srv/www/vhosts/HOSTNAME/htdocs ssl/MEDIAWIKI/includes/auth/AuthPluginPrimaryAuthenticationProvider.php(145): RadiusAuthPlugin->updateUser(用户) #1/usr/srv/www/vhosts/HOSTNAME/htdocs ssl/MEDIAWIKI/includes/Hooks.php(177): MediaWiki\Auth\AuthPluginPrimaryAuthenticationProvider->onUserLoggedIn(用户) #2/usr/srv/www/vhosts/HOSTNAME/htdocs ssl/MEDIAWIKI/includes/Hooks.php(205): Hooks::callHook(字符串、数组、数组、NULL) #3/usr/srv/www/vhosts/HOSTNAME/htdocs ssl/MEDIAWIKI/includes/auth/AuthManager.php(2388): Hooks::run(字符串、数组) #4/usr/srv/www/vhosts/HOSTNAME/htdocs ssl/MEDIAWIKI/includes/auth/AuthManager.php(690):MEDIAWIKI\auth\AuthManager->setSessionDataForUser(用户,布尔值) #5/usr/srv/www/vhosts/HOSTNAME/htdocs ssl/MEDIAWIKI/includes/auth/AuthManager.php(382):MEDIAWIKI\auth\AuthManager->continueAuthentication(数组) #6/usr/srv/www/vhosts/HOSTNAME/htdocs ssl/MEDIAWIKI/includes/specialpage/AuthManagerSpecialPage.php(353): MediaWiki\Auth\AuthManager->beginAuthentication(数组、字符串) #7/usr/srv/www/vhosts/HOSTNAME/htdocs ssl/MEDIAWIKI/includes/specialpage/AuthManagerSpecialPage.php(482): AuthManager特殊页面->执行身份验证步骤(字符串、数组) #8/usr/srv/www/vhosts/HOSTNAME/htdocs ssl/MEDIAWIKI/includes/htmlform/htmlform.php(669): AuthManagerSpecialPage->handleFormSubmit(数组,VFormHTMLForm) #9/usr/srv/www/vhosts/HOSTNAME/htdocs ssl/MEDIAWIKI/includes/specialpage/AuthManagerSpecialPage.php(416): HTMLForm->trySubmit() #10/usr/srv/www/vhosts/HOSTNAME/htdocs ssl/MEDIAWIKI/includes/specialpage/LoginSignupSpecialPage.php(316): AuthManagerSpecialPage->trySubmit() #11/usr/srv/www/vhosts/HOSTNAME/htdocs ssl/MEDIAWIKI/includes/specialpage/specialpage.php(522): LoginSignupSpecialPage->execute(空) #12/usr/srv/www/vhosts/HOSTNAME/htdocs ssl/MEDIAWIKI/includes/specialpage/SpecialPageFactory.php(578): 特殊页面->运行(空) #13/usr/srv/www/vhosts/HOSTNAME/htdocs ssl/MEDIAWIKI/includes/MEDIAWIKI.php(287): SpecialPageFactory::executePath(标题、请求上下文) #14/usr/srv/www/vhosts/HOSTNAME/htdocs ssl/MEDIAWIKI/includes/MEDIAWIKI.php(851): MediaWiki->performRequest() #15/usr/srv/www/vhosts/HOSTNAME/htdocs ssl/MEDIAWIKI/includes/MEDIAWIKI.php(523): MediaWiki->main() #16/usr/srv/www/vhosts/HOSTNAME/htdocs ssl/MEDIAWIKI/index.php(43): MediaWiki->run() #17{main} (出于安全原因,我对路径的某些部分进行了审查) RadiusAuthPlugin.php:Php Mediawiki错误:调用未定义的方法User::saveToCache(),php,mediawiki,radius,mediawiki-extensions,Php,Mediawiki,Radius,Mediawiki Extensions,我最近将mediawiki安装更新为1.30,现在正在处理更新过程中出现的插件错误 我最直接的错误是Mediawiki的RadiusAuthPlugin。尝试登录时,页面上显示以下错误,但登录成功: [3d3906e176c5476982ff8037] /MEDIAWIKI/index.php?title=Spezial:Login&returnto=Mainpage错误来自 第75行 /usr/srv/www/vhosts/HOSTNAME/htdocs ssl/MEDIAWIKI/exten
<?php
require_once("$IP/includes/AuthPlugin.php");
require_once("radius.class.php");
require_once("$IP/includes/GlobalFunctions.php");
error_reporting(E_ALL);
class RadiusAuthPlugin extends AuthPlugin
{
function userExists($username)
{
return TRUE;
}
function authenticate($username, $password)
{
global $wgRadiusAuthPluginServers, $wgRadiusAuthPluginSecret;
$username = strtolower($username);
//$handle=fopen("/tmp/radius","w");
//fwrite($handle,"$username;$password;\n");
foreach($wgRadiusAuthPluginServers as $server)
{
$radius = new Radius($server, $wgRadiusAuthPluginSecret);
//$radius->SetNasIpAddress('NAS_IP_ADDRESS'); // Needed for some devi$
//fwrite($handle,"Radius Objekt angelegt\n");
if ($radius->AccessRequest($username, $password))
{
return TRUE;
//fwrite($handle,"Auth successful\n");
}
//else{
// fwrite($handle,"Auth not successful\n");
// }
}
//fclose($handle);
return FALSE;
}
function modifyUITemplate(&$template, &$type)
{
global $wgRadiusAuthPluginExtrafields;
$template->set('usedomain', FALSE);
$template->set('useemail', FALSE);
$template->set('create', FALSE);
//$template->set('create', TRUE);
$template->set('canremember', FALSE);
$template->set('extrafields', $wgRadiusAuthPluginExtrafields);
}
function autoCreate()
{
global $wgRadiusAuthPluginAutoCreate;
if(isset($wgRadiusAuthPluginAutoCreate))
{
if(is_bool($wgRadiusAuthPluginAutoCreate))
{
return $wgRadiusAuthPluginAutoCreate;
}
}
return FALSE;
}
function validDomain($domain)
{
return TRUE;
}
function updateUser(&$user)
{
global $wgRadiusAuthPluginMaildomain;
$user->setEmail($user->getName()."@".$wgRadiusAuthPluginMaildomain);
$user->saveToCache();
return TRUE;
}
function allowPasswordChange()
{
//return false;
return TRUE; // since Ubuntu 14.04
}
function allowPropChange($prop = '')
{
return FALSE;
}
function allowSetLocalPassword()
{
return true;
}
function setPassword($user, $password)
{
return true;
}
function updateExternalDB($user)
{
return true;
}
function canCreateAccounts()
{
# return FALSE;
return TRUE;
}
function adduser($user, $password, $email = '', $realname = '')
{
return false;
# return true;
}
function strict()
{
global $wgRadiusAuthPluginStrict;
if(isset($wgRadiusAuthPluginStrict))
{
if(is_bool($wgRadiusAuthPluginStrict))
{
return $wgRadiusAuthPluginStrict;
}
}
return TRUE;
}
function strictUserAuth($user)
{
global $wgRadiusAuthPluginStrictUserAuth;
if(isset($wgRadiusAuthPluginStrictUserAuth))
{
if(is_bool($wgRadiusAuthPluginStrictUserAuth))
{
return $wgRadiusAuthPluginStrictUserAuth;
}
}
}
return TRUE;
}
function initUser(&$user, $autocreate = false)
{
global $wgRadiusAuthPluginMaildomain, $wgSitename, $wgRadiusAuthPluginM$
$user->setEmail($user->getName()."@".$wgRadiusAuthPluginMaildomain);
$user->setEmailAuthenticationTimestamp(wfTimestamp(TS_MW));
$user->sendMail("[".$wgSitename."] ".$wgRadiusAuthPluginMailSubject,$wg$
$user->removeGroup("User");
//$user->removeGroup("auto-registered User");
//$user->addGroup("USER");
}
}
$wgExtensionCredits['other'][] = array(
'name' => 'RadiusAuthPlugin',
'version' => '1.1.0',
'author' => 'James Young',
'author' => 'edited by Andreas Ihrig',
'description' => 'Automatic login with a RADIUS server; now with Setting-Op$
);
?>
已删除用户::saveToCache。(在此之前,它的文档说“不应在用户类之外调用此方法”。这些警告是有原因的。)为什么有人要保存对缓存的更改,而不是磁盘?坦率地说,该插件的作者似乎不太清楚他们在做什么 您可以尝试将
saveToCache
替换为saveSettings
。虽然理想情况下,它应该首先检查电子邮件地址是否已经正确,以避免无意义的DB写入。而且可能也会呼叫confirmEmail
,因为电子邮件地址来自权威来源