Joomla 3.6-3.7-后端白色页面-致命错误login.php

Joomla 3.6-3.7-后端白色页面-致命错误login.php,login,joomla,fatal-error,Login,Joomla,Fatal Error,我在Joomla网站的后端有一个错误。当我插入用户和密码时,我可以看到以下错误: 注意:第323行的/web/htdocs/www.namesite.it/home/libraries/joomla/input/input.php中未定义的偏移量:0 致命错误:在第33行的/web/htdocs/www.namesite.it/home/administrator/components/com_login/models/login.php中对非对象调用成员函数get() 如果我停用一个com\u

我在Joomla网站的后端有一个错误。当我插入用户和密码时,我可以看到以下错误:

注意:第323行的/web/htdocs/www.namesite.it/home/libraries/joomla/input/input.php中未定义的偏移量:0

致命错误:在第33行的/web/htdocs/www.namesite.it/home/administrator/components/com_login/models/login.php中对非对象调用成员函数get()

如果我停用一个
com\u登录名
,我可以看到常规结构,但我可以进入后端

这是文件
administrator/components/com\u login/models/login.php

<?php
/**
 * @package     Joomla.Administrator
 * @subpackage  com_login
 *
 * @copyright   Copyright (C) 2005 - 2016 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * Login Model
 *
 * @since  1.5
 */
class LoginModelLogin extends JModelLegacy
{
    /**
     * Method to auto-populate the model state.
     *
     * Note. Calling getState in this method will result in recursion.
     *
     * @return  void
     *
     * @since   1.6
     */
    protected function populateState()
    {
        $input = JFactory::getApplication()->input->getInputForRequestMethod();

        $credentials = array(
            'username'  => $input->get('username', '', 'USERNAME'),
            'password'  => $input->get('passwd', '', 'RAW'),
            'secretkey' => $input->get('secretkey', '', 'RAW'),
        );
        $this->setState('credentials', $credentials);

        // Check for return URL from the request first.
        if ($return = $input->get('return', '', 'BASE64'))
        {
            $return = base64_decode($return);

            if (!JUri::isInternal($return))
            {
                $return = '';
            }
        }

        // Set the return URL if empty.
        if (empty($return))
        {
            $return = 'index.php';
        }

        $this->setState('return', $return);
    }

    /**
     * Get the administrator login module by name (real, eg 'login' or folder, eg 'mod_login').
     *
     * @param   string  $name   The name of the module.
     * @param   string  $title  The title of the module, optional.
     *
     * @return  object  The Module object.
     *
     * @since   11.1
     */
    public static function getLoginModule($name = 'mod_login', $title = null)
    {
        $result = null;
        $modules = self::_load($name);
        $total = count($modules);

        for ($i = 0; $i < $total; $i++)
        {
            // Match the title if we're looking for a specific instance of the module.
            if (!$title || $modules[$i]->title == $title)
            {
                $result = $modules[$i];
                break;
            }
        }

        // If we didn't find it, and the name is mod_something, create a dummy object.
        if (is_null($result) && substr($name, 0, 4) == 'mod_')
        {
            $result = new stdClass;
            $result->id = 0;
            $result->title = '';
            $result->module = $name;
            $result->position = '';
            $result->content = '';
            $result->showtitle = 0;
            $result->control = '';
            $result->params = '';
            $result->user = 0;
        }

        return $result;
    }

    /**
     * Load login modules.
     *
     * Note that we load regardless of state or access level since access
     * for public is the only thing that makes sense since users are not logged in
     * and the module lets them log in.
     * This is put in as a failsafe to avoid super user lock out caused by an unpublished
     * login module or by a module set to have a viewing access level that is not Public.
     *
     * @param   string  $module  The name of the module.
     *
     * @return  array
     *
     * @since   11.1
     */
    protected static function _load($module)
    {
        static $clean;

        if (isset($clean))
        {
            return $clean;
        }

        $app = JFactory::getApplication();
        $lang = JFactory::getLanguage()->getTag();
        $clientId = (int) $app->getClientId();

        $cache = JFactory::getCache('com_modules', '');
        $cacheid = md5(serialize(array($clientId, $lang)));
        $loginmodule = array();

        if (!($clean = $cache->get($cacheid)))
        {
            $db = JFactory::getDbo();

            $query = $db->getQuery(true)
                ->select('m.id, m.title, m.module, m.position, m.showtitle, m.params')
                ->from('#__modules AS m')
                ->where('m.module =' . $db->quote($module) . ' AND m.client_id = 1')
                ->join('LEFT', '#__extensions AS e ON e.element = m.module AND e.client_id = m.client_id')
                ->where('e.enabled = 1');

            // Filter by language.
            if ($app->isSite() && $app->getLanguageFilter())
            {
                $query->where('m.language IN (' . $db->quote($lang) . ',' . $db->quote('*') . ')');
            }

            $query->order('m.position, m.ordering');

            // Set the query.
            $db->setQuery($query);

            try
            {
                $modules = $db->loadObjectList();
            }
            catch (RuntimeException $e)
            {
                JError::raiseWarning(500, JText::sprintf('JLIB_APPLICATION_ERROR_MODULE_LOAD', $e->getMessage()));

                return $loginmodule;
            }

            // Return to simple indexing that matches the query order.
            $loginmodule = $modules;

            $cache->store($loginmodule, $cacheid);
        }

        return $loginmodule;
    }
}

我们已经找到了问题的原因。
Patchman最近发布了一些joomla文件的补丁,这些文件在应用时破坏了joomla站点


如果您(或您的提供商)正在使用Patchman,回滚补丁程序应该可以解决它。

我的Joomla也面临同样的问题!3.7.5版本,我试着将您的文件与3.7.5版本进行比较,发现它们确实不同。登录时的所有参数都已正确发送。对我来说似乎很奇怪,因为我知道在这个网站上没有做什么特别的事情。你什么时候会得到白色页面?这个问题令人困惑。通常白页是由于插件不好造成的。我没有做任何更新,网站恢复正常。