Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 2 Ответов
  • 2316 Просмотров
*

AlexMoscow

  • Новичок
  • 2
  • 0 / 0
Ошибка render
« : 29.03.2013, 01:07:08 »
Всем привет.

Установил Joomla 2.5.9. на хостинг вида test1.myhost.ru, создал базу, загрузил шаблон и наполнил сайт инфой. Все работает ОК.
Перенес сайт на домен вида мойдомен.рф, импортнул базу, поправил configuration.php. Сайт не открывается - Ошибка HTTP 500 (Internal Server Error): При попытке сервера выполнить запрос возникла неожиданная ситуация. Перепробовал уже все, перезаливал несколько раз файлы, реимпортил базу.

Подозрение было, что ошибался при переносе, в связи с чем попробовал перенести на другой домен вида test2.myhost.ru, импортнул базу, поправил configuration.php - вуаля все работает без проблем! То есть переношу правильно.

Папка домена в зоне рф на FTP написана на Punycode, соответственно в configuration.php все пути прописал тоже корректно с использованием ASCII-символов (xn--58-ylcu3b0c.xn--p1ai).

Сделал запрос хостеру, чтобы прислал логи. Вот что мне ответили:
Код
Сайт не открывается из-за следующей ошибки:
[Thu Mar 28 15:10:16 2013] [error] [client 217.65.14.16] PHP Fatal error: Call
to a member function render() on a non-object in
/usr/home/29968/xn--58-ylcu3b0c.xn--p1ai/html/libraries/joomla/document/html/html.php
on line 371


Прикладываю код.

сама строка 371:
$this->setBuffer($renderer->render($name, $attribs, $result), $type, $name);


вот текст функции с этой строкой:

Код
	/**
* Get the contents of a document include
*
* @param   string  $type     The type of renderer
* @param   string  $name     The name of the element to render
* @param   array   $attribs  Associative array of remaining attributes.
*
* @return  The output of the renderer
*
* @since   11.1
*/
public function getBuffer($type = null, $name = null, $attribs = array())
{
// If no type is specified, return the whole buffer
if ($type === null)
{
return parent::$_buffer;
}

$result = null;
if (isset(parent::$_buffer[$type][$name]))
{
return parent::$_buffer[$type][$name];
}

// If the buffer has been explicitly turned off don't display or attempt to render
if ($result === false)
{
return null;
}

$renderer = $this->loadRenderer($type);
if ($this->_caching == true && $type == 'modules')
{
$cache = JFactory::getCache('com_modules', '');
$hash = md5(serialize(array($name, $attribs, $result, $renderer)));
$cbuffer = $cache->get('cbuffer_' . $type);

if (isset($cbuffer[$hash]))
{
return JCache::getWorkarounds($cbuffer[$hash], array('mergehead' => 1));
}
else
{

$options = array();
$options['nopathway'] = 1;
$options['nomodules'] = 1;
$options['modulemode'] = 1;

$this->setBuffer($renderer->render($name, $attribs, $result), $type, $name);
$data = parent::$_buffer[$type][$name];

$tmpdata = JCache::setWorkarounds($data, $options);

$cbuffer[$hash] = $tmpdata;

$cache->store($cbuffer, 'cbuffer_' . $type);
}

}
else
{
$this->setBuffer($renderer->render($name, $attribs, $result), $type, $name);
}

return parent::$_buffer[$type][$name];
}


Подскажите пожалуйста в чем может быть проблема?

А вот собственно текст всего файла:

Код
<?php
/**
 * @package     Joomla.Platform
 * @subpackage  Document
 *
 * @copyright   Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE
 */

defined('JPATH_PLATFORM') or die;

jimport('joomla.application.module.helper');
jimport('joomla.utilities.utility');

/**
 * DocumentHTML class, provides an easy interface to parse and display a HTML document
 *
 * @package     Joomla.Platform
 * @subpackage  Document
 * @since       11.1
 */
class JDocumentHTML extends JDocument
{
/**
* Array of Header <link> tags
*
* @var    array
* @since  11.1
*/
public $_links = array();

/**
* Array of custom tags
*
* @var    array
* @since  11.1
*/
public $_custom = array();

/**
* Name of the template
*
* @var    string
* @since  11.1
*/
public $template = null;

/**
* Base url
*
* @var    string
* @since  11.1
*/
public $baseurl = null;

/**
* Array of template parameters
*
* @var    array
* @since  11.1
*/
public $params = null;

/**
* File name
*
* @var    array
* @since  11.1
*/
public $_file = null;

/**
* String holding parsed template
*
* @var    string
* @since  11.1
*/
protected $_template = '';

/**
* Array of parsed template JDoc tags
*
* @var    array
* @since  11.1
*/
protected $_template_tags = array();

/**
* Integer with caching setting
*
* @var    integer
* @since  11.1
*/
protected $_caching = null;

/**
* Class constructor
*
* @param   array  $options  Associative array of options
*
* @since   11.1
*/
public function __construct($options = array())
{
parent::__construct($options);

// Set document type
$this->_type = 'html';

// Set default mime type and document metadata (meta data syncs with mime type by default)
$this->setMimeEncoding('text/html');
}

/**
* Get the HTML document head data
*
* @return  array  The document head data in array form
*
* @since   11.1
*/
public function getHeadData()
{
$data = array();
$data['title']       = $this->title;
$data['description'] = $this->description;
$data['link']        = $this->link;
$data['metaTags']    = $this->_metaTags;
$data['links']       = $this->_links;
$data['styleSheets'] = $this->_styleSheets;
$data['style']       = $this->_style;
$data['scripts']     = $this->_scripts;
$data['script']      = $this->_script;
$data['custom']      = $this->_custom;
return $data;
}

/**
* Set the HTML document head data
*
* @param   array  $data  The document head data in array form
*
* @return  JDocumentHTML instance of $this to allow chaining
*
* @since   11.1
*/
public function setHeadData($data)
{
if (empty($data) || !is_array($data))
{
return;
}

$this->title = (isset($data['title']) && !empty($data['title']))? $data['title'] : $this->title;
$this->description = (isset($data['description']) && !empty($data['description']))? $data['description'] : $this->description;
$this->link = (isset($data['link']) && !empty($data['link']))? $data['link'] : $this->link;
$this->_metaTags = (isset($data['metaTags']) && !empty($data['metaTags']))? $data['metaTags'] : $this->_metaTags;
$this->_links = (isset($data['links']) && !empty($data['links']))? $data['links'] : $this->_links;
$this->_styleSheets = (isset($data['styleSheets']) && !empty($data['styleSheets']))? $data['styleSheets'] : $this->_styleSheets;
$this->_style = (isset($data['style']) && !empty($data['style']))? $data['style'] : $this->_style;
$this->_scripts = (isset($data['scripts']) && !empty($data['scripts']))? $data['scripts'] : $this->_scripts;
$this->_script = (isset($data['script']) && !empty($data['script']))? $data['script'] : $this->_script;
$this->_custom = (isset($data['custom']) && !empty($data['custom']))? $data['custom'] : $this->_custom;

return $this;
}

/**
* Merge the HTML document head data
*
* @param   array  $data  The document head data in array form
*
* @return  JDocumentHTML instance of $this to allow chaining
*
* @since   11.1
*/
public function mergeHeadData($data)
{

if (empty($data) || !is_array($data))
{
return;
}

$this->title = (isset($data['title']) && !empty($data['title']) && !stristr($this->title, $data['title']))
? $this->title . $data['title']
: $this->title;
$this->description = (isset($data['description']) && !empty($data['description']) && !stristr($this->description, $data['description']))
? $this->description . $data['description']
: $this->description;
$this->link = (isset($data['link']))? $data['link'] : $this->link;

if (isset($data['metaTags']))
{
foreach ($data['metaTags'] as $type1 => $data1)
{
$booldog = $type1 == 'http-equiv' ? true : false;
foreach ($data1 as $name2 => $data2)
{
$this->setMetaData($name2, $data2, $booldog);
}
}
}

$this->_links = (isset($data['links']) && !empty($data['links']) && is_array($data['links']))
? array_unique(array_merge($this->_links, $data['links']))
: $this->_links;
$this->_styleSheets = (isset($data['styleSheets']) && !empty($data['styleSheets']) && is_array($data['styleSheets']))
? array_merge($this->_styleSheets, $data['styleSheets'])
: $this->_styleSheets;

if (isset($data['style']))
{
foreach ($data['style'] as $type => $stdata)
{
if (!isset($this->_style[strtolower($type)]) || !stristr($this->_style[strtolower($type)], $stdata))
{
$this->addStyleDeclaration($stdata, $type);
}
}
}

$this->_scripts = (isset($data['scripts']) && !empty($data['scripts']) && is_array($data['scripts']))
? array_merge($this->_scripts, $data['scripts'])
: $this->_scripts;

if (isset($data['script']))
{
foreach ($data['script'] as $type => $sdata)
{
if (!isset($this->_script[strtolower($type)]) || !stristr($this->_script[strtolower($type)], $sdata))
{
$this->addScriptDeclaration($sdata, $type);
}
}
}

$this->_custom = (isset($data['custom']) && !empty($data['custom']) && is_array($data['custom']))
? array_unique(array_merge($this->_custom, $data['custom']))
: $this->_custom;

return $this;
}

/**
* Adds <link> tags to the head of the document
*
* $relType defaults to 'rel' as it is the most common relation type used.
* ('rev' refers to reverse relation, 'rel' indicates normal, forward relation.)
* Typical tag: <link href="index.php" rel="Start">
*
* @param   string  $href      The link that is being related.
* @param   string  $relation  Relation of link.
* @param   string  $relType   Relation type attribute.  Either rel or rev (default: 'rel').
* @param   array   $attribs   Associative array of remaining attributes.
*
* @return  JDocumentHTML instance of $this to allow chaining
*
* @since   11.1
*/
public function addHeadLink($href, $relation, $relType = 'rel', $attribs = array())
{
$this->_links[$href]['relation'] = $relation;
$this->_links[$href]['relType'] = $relType;
$this->_links[$href]['attribs'] = $attribs;

return $this;
}

/**
* Adds a shortcut icon (favicon)
*
* This adds a link to the icon shown in the favorites list or on
* the left of the url in the address bar. Some browsers display
* it on the tab, as well.
*
* @param   string  $href      The link that is being related.
* @param   string  $type      File type
* @param   string  $relation  Relation of link
*
* @return  JDocumentHTML instance of $this to allow chaining
*
* @since   11.1
*/
public function addFavicon($href, $type = 'image/vnd.microsoft.icon', $relation = 'shortcut icon')
{
$href = str_replace('\\', '/', $href);
$this->addHeadLink($href, $relation, 'rel', array('type' => $type));

return $this;
}

/**
* Adds a custom HTML string to the head block
*
* @param   string  $html  The HTML to add to the head
*
* @return  JDocumentHTML instance of $this to allow chaining
*
* @since   11.1
*/
public function addCustomTag($html)
{
$this->_custom[] = trim($html);

return $this;
}

/**
* Get the contents of a document include
*
* @param   string  $type     The type of renderer
* @param   string  $name     The name of the element to render
* @param   array   $attribs  Associative array of remaining attributes.
*
* @return  The output of the renderer
*
* @since   11.1
*/
public function getBuffer($type = null, $name = null, $attribs = array())
{
// If no type is specified, return the whole buffer
if ($type === null)
{
return parent::$_buffer;
}

$result = null;
if (isset(parent::$_buffer[$type][$name]))
{
return parent::$_buffer[$type][$name];
}

// If the buffer has been explicitly turned off don't display or attempt to render
if ($result === false)
{
return null;
}

$renderer = $this->loadRenderer($type);
if ($this->_caching == true && $type == 'modules')
{
$cache = JFactory::getCache('com_modules', '');
$hash = md5(serialize(array($name, $attribs, $result, $renderer)));
$cbuffer = $cache->get('cbuffer_' . $type);

if (isset($cbuffer[$hash]))
{
return JCache::getWorkarounds($cbuffer[$hash], array('mergehead' => 1));
}
else
{

$options = array();
$options['nopathway'] = 1;
$options['nomodules'] = 1;
$options['modulemode'] = 1;

$this->setBuffer($renderer->render($name, $attribs, $result), $type, $name);
$data = parent::$_buffer[$type][$name];

$tmpdata = JCache::setWorkarounds($data, $options);

$cbuffer[$hash] = $tmpdata;

$cache->store($cbuffer, 'cbuffer_' . $type);
}

}
else
{
$this->setBuffer($renderer->render($name, $attribs, $result), $type, $name);
}

return parent::$_buffer[$type][$name];
}

/**
* Set the contents a document includes
*
* @param   string  $content  The content to be set in the buffer.
* @param   array   $options  Array of optional elements.
*
* @return  JDocumentHTML instance of $this to allow chaining
*
* @since   11.1
*/
public function setBuffer($content, $options = array())
{
// The following code is just for backward compatibility.
if (func_num_args() > 1 && !is_array($options))
{
$args = func_get_args();
$options = array();
$options['type'] = $args[1];
$options['name'] = (isset($args[2]))? $args[2] : null;
}

parent::$_buffer[$options['type']][$options['name']] = $content;

return $this;
}

/**
* Parses the template and populates the buffer
*
* @param   array  $params  Parameters for fetching the template
*
* @return  JDocumentHTML instance of $this to allow chaining
*
* @since   11.1
*/
public function parse($params = array())
{
return $this->_fetchTemplate($params)->_parseTemplate();
}

/**
* Outputs the template to the browser.
*
* @param   boolean  $caching  If true, cache the output
* @param   array    $params   Associative array of attributes
*
* @return  The rendered data
*
* @since   11.1
*/
public function render($caching = false, $params = array())
{
$this->_caching = $caching;

if (!empty($this->_template))
{
$data = $this->_renderTemplate();
}
else
{
$this->parse($params);
$data = $this->_renderTemplate();
}

parent::render();
return $data;
}

/**
* Count the modules based on the given condition
*
* @param   string  $condition  The condition to use
*
* @return  integer  Number of modules found
*
* @since   11.1
*/
public function countModules($condition)
{
$operators = '(\+|\-|\*|\/|==|\!=|\<\>|\<|\>|\<=|\>=|and|or|xor)';
$words = preg_split('# ' . $operators . ' #', $condition, null, PREG_SPLIT_DELIM_CAPTURE);
for ($i = 0, $n = count($words); $i < $n; $i += 2)
{
// odd parts (modules)
$name = strtolower($words[$i]);
$words[$i] = ((isset(parent::$_buffer['modules'][$name])) && (parent::$_buffer['modules'][$name] === false))
? 0
: count(JModuleHelper::getModules($name));
}

$str = 'return ' . implode(' ', $words). ';';

return eval($str);
}

/**
* Count the number of child menu items
*
* @return  integer  Number of child menu items
*
* @since   11.1
*/
public function countMenuChildren()
{
static $children;

if (!isset($children))
{
$dbo = JFactory::getDbo();
$app = JFactory::getApplication();
$menu = $app->getMenu();
$active = $menu->getActive();
if ($active)
{
$query->getQuery(true);
$query->select('COUNT(*)');
$query->from('#__menu');
$query->where('parent_id = ' . $active->id);
$query->where('published = 1');
$children = $dbo->loadResult();
}
else
{
$children = 0;
}
}

return $children;
}

/**
* Load a template file
*
* @param   string  $directory  The name of the template
* @param   string  $filename   The actual filename
*
* @return  string  The contents of the template
*
* @since   11.1
*/
protected function _loadTemplate($directory, $filename)
{
// $component = JApplicationHelper::getComponentName();

$contents = '';

// Check to see if we have a valid template file
if (file_exists($directory . '/' . $filename))
{
// Store the file path
$this->_file = $directory . '/' . $filename;

//get the file content
ob_start();
require $directory . '/' . $filename;
$contents = ob_get_contents();
ob_end_clean();
}

// Try to find a favicon by checking the template and root folder
$path = $directory . '/';
$dirs = array($path, JPATH_BASE . '/');
foreach ($dirs as $dir)
{
$icon = $dir . 'favicon.ico';
if (file_exists($icon))
{
$path = str_replace(JPATH_BASE . '/', '', $dir);
$path = str_replace('\\', '/', $path);
$this->addFavicon(JURI::base(true). '/' . $path . 'favicon.ico');
break;
}
}

return $contents;
}

/**
* Fetch the template, and initialise the params
*
* @param   array  $params  Parameters to determine the template
*
* @return  JDocumentHTML instance of $this to allow chaining
*
* @since   11.1
*/
protected function _fetchTemplate($params = array())
{
// Check
$directory = isset($params['directory'])? $params['directory'] : 'templates';
$filter = JFilterInput::getInstance();
$template = $filter->clean($params['template'], 'cmd');
$file = $filter->clean($params['file'], 'cmd');

if (!file_exists($directory . '/' . $template . '/' . $file))
{
$template = 'system';
}

// Load the language file for the template
$lang = JFactory::getLanguage();
// 1.5 or core then 1.6

$lang->load('tpl_' . $template, JPATH_BASE, null, false, false)
|| $lang->load('tpl_' . $template, $directory . '/' . $template, null, false, false)
|| $lang->load('tpl_' . $template, JPATH_BASE, $lang->getDefault(), false, false)
|| $lang->load('tpl_' . $template, $directory . '/' . $template, $lang->getDefault(), false, false);

// Assign the variables
$this->template = $template;
$this->baseurl = JURI::base(true);
$this->params = isset($params['params'])? $params['params'] : new JRegistry;

// Load
$this->_template = $this->_loadTemplate($directory . '/' . $template, $file);

return $this;
}

/**
* Parse a document template
*
* @return  The parsed contents of the template
*
* @return  JDocumentHTML instance of $this to allow chaining
*
* @since   11.1
*/
protected function _parseTemplate()
{
$matches = array();

if (preg_match_all('#<jdoc:include\ type="([^"]+)" (.*)\/>#iU', $this->_template, $matches))
{
$template_tags_first = array();
$template_tags_last = array();

// Step through the jdocs in reverse order.
for ($i = count($matches[0]) - 1; $i >= 0; $i--)
{
$type = $matches[1][$i];
$attribs = empty($matches[2][$i])? array() : JUtility::parseAttributes($matches[2][$i]);
$name = isset($attribs['name'])? $attribs['name'] : null;

// Separate buffers to be executed first and last
if ($type == 'module' || $type == 'modules')
{
$template_tags_first[$matches[0][$i]] = array('type' => $type, 'name' => $name, 'attribs' => $attribs);
}
else
{
$template_tags_last[$matches[0][$i]] = array('type' => $type, 'name' => $name, 'attribs' => $attribs);
}
}
// Reverse the last array so the jdocs are in forward order.
$template_tags_last = array_reverse($template_tags_last);

$this->_template_tags = $template_tags_first + $template_tags_last;
}

return $this;
}

/**
* Render pre-parsed template
*
* @return string rendered template
*
* @since   11.1
*/
protected function _renderTemplate()
{
$replace = array();
$with = array();

foreach ($this->_template_tags as $jdoc => $args)
{
$replace[] = $jdoc;
$with[] = $this->getBuffer($args['type'], $args['name'], $args['attribs']);
}

return str_replace($replace, $with, $this->_template);
}
}
*

AlexMoscow

  • Новичок
  • 2
  • 0 / 0
Re: Ошибка render
« Ответ #1 : 29.03.2013, 20:07:40 »
Неужели никто не сталкивался с такой проблемой? И никто не может понять в чем ошибка?
Помогите пожалуйста, уже все перепробовал.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Ошибка render
« Ответ #2 : 29.03.2013, 21:18:01 »
Обратите внимание на строку 339
Код
$renderer = $this->loadRenderer($type);
У меня еще нет ответа, но лог указывает на то, что $renderer - не копия объекта. В файле не вижу функцию loadRenderer. Мне кажется, отсюда нужно копать. В любом случае, проблема, скорее всего, связана с особенностью кириллического домена.

P.S. Нашел функцию loadRenderer в document.php, она ищет файл нужного класса в \libraries\joomla\document\html\renderer и
1. возвращает ошибку 500, если не находит.
2. возвращает null, если находит, но не может создать объект.
3. возвращает объект.
В вашем случае возвращает 500, так что проверьте \libraries\joomla\document\html\renderer, все ли там на месте.
« Последнее редактирование: 29.03.2013, 21:53:55 от robert »
Не будь паразитом, сделай что-нибудь самостоятельно!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

500 - Обнаружена ошибка

Автор CheCat

Ответов: 4
Просмотров: 1611
Последний ответ 19.12.2020, 07:39:07
от gartes
Ошибка recaptha

Автор Bolat19721

Ответов: 13
Просмотров: 1677
Последний ответ 11.10.2020, 09:44:38
от Bolat19721
ПОМОГИТЕ!!! Ошибка 500 в версии 2.5.19 при оформлении заказа

Автор promwood

Ответов: 10
Просмотров: 1858
Последний ответ 16.09.2020, 08:35:26
от AlexB
"Ошибка 404 - Материал нее найден" как заходишь на сайт

Автор Lepby

Ответов: 17
Просмотров: 41693
Последний ответ 11.06.2020, 08:48:10
от sound
Ошибка You have an error in your SQL syntax

Автор Jozheg

Ответов: 27
Просмотров: 2819
Последний ответ 23.05.2020, 00:23:37
от Jozheg