Задать вопрос
@BHop
Дилетант широкого профиля

Не работает админка Yii-сайта после переноса, куда копать?

Всем добрый день.
При попытке переноса на VPS сайта, написанного под Yii 1.1.13, возник ряд проблем. одна часть решилась запуском сайта под PHP 5.0, а другая оказалась сложнее: появилась проблема с неоткрывающейся админкой сайта, вываливается ошибка:
Fatal error: Class 'TbBaseMenu' not found in /home/safaridi/domains/ukrsafaritur.com/protected/extensions/bootstrap/widgets/TbMenu.php on line 16

при этом упомянутая 16-я строка выглядит так:
class TbMenu extends TbBaseMenu

вот весь TbMenu.php для ясности
spoiler
<?php
/**
 * TbMenu class file.
 * @author Christoffer Niska <ChristofferNiska@gmail.com>
 * @copyright Copyright &copy; Christoffer Niska 2012-
 * @license http://www.opensource.org/licenses/bsd-license.php New BSD License
 * @package bootstrap.widgets
 */

Yii::import('bootstrap.widgets.TbBaseMenu');

/**
 * Bootstrap menu.
 * @see http://twitter.github.com/bootstrap/components.html#navs
 */
class TbMenu extends TbBaseMenu
{
	// Menu types.
	const TYPE_TABS = 'tabs';
	const TYPE_PILLS = 'pills';
	const TYPE_LIST = 'list';

	/**
	 * @var string the menu type.
	 * Valid values are 'tabs' and 'pills'.
	 */
	public $type;
	/**
	 * @var string|array the scrollspy target or configuration.
	 */
	public $scrollspy;
	/**
	* @var boolean indicates whether the menu should appear vertically stacked.
	*/
	public $stacked = false;
	/**
	 * @var boolean indicates whether dropdowns should be dropups instead.
	 */
	public $dropup = false;

	/**
	 * Initializes the widget.
	 */
	public function init()
	{
		parent::init();

		$classes = array('nav');

		$validTypes = array(self::TYPE_TABS, self::TYPE_PILLS, self::TYPE_LIST);

		if (isset($this->type) && in_array($this->type, $validTypes))
			$classes[] = 'nav-'.$this->type;

		if ($this->stacked && $this->type !== self::TYPE_LIST)
			$classes[] = 'nav-stacked';

		if ($this->dropup === true)
			$classes[] = 'dropup';

		if (isset($this->scrollspy))
		{
			$scrollspy = is_string($this->scrollspy) ? array('target'=>$this->scrollspy) : $this->scrollspy;
			$this->widget('bootstrap.widgets.TbScrollSpy', $scrollspy);
		}

		if (!empty($classes))
		{
			$classes = implode(' ', $classes);
			if (isset($this->htmlOptions['class']))
				$this->htmlOptions['class'] .= ' '.$classes;
			else
				$this->htmlOptions['class'] = $classes;
		}
	}

	/**
	 * Returns the divider css class.
	 * @return string the class name
	 */
	public function getDividerCssClass()
	{
		return (isset($this->type) && $this->type === self::TYPE_LIST) ? 'divider' : 'divider-vertical';
	}

	/**
	 * Returns the dropdown css class.
	 * @return string the class name
	 */
	public function getDropdownCssClass()
	{
		return 'dropdown';
	}

	/**
	 * Returns whether this is a vertical menu.
	 * @return boolean the result
	 */
	public function isVertical()
	{
		return isset($this->type) && $this->type === self::TYPE_LIST;
	}
}


Возможно, не хватает каких-то PHP-расширений, но что-то ничего внятного не нагуглилось.
Подскажите, в какую сторону рыть, пожалуйста. Заранее всем спасибо.
  • Вопрос задан
  • 175 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 1
@BHop Автор вопроса
Дилетант широкого профиля
Добрые люди подсказали идею про некорректность путей и в самом деле они оказались неточными: на сайте было 2 файла TbBaseMenu.php в расположении /protected/extensions/bootstrap2/widgets и в /protected/extensions/bootstrap/widgets , и при ближайшем рассмотрении один из этих файлов (который в подкаталоге bootstrap) оказался пустой, ошибка ссылалась именно на него, скопировал его содержимое из полного TbBaseMenu.php (из подкаталога bootstrap2) - и всё полетело.

P.S. Осталось непонятным, почему про переносе стал пустым файл и/или как это всё работало на прежнем хостинге, который был на VDS.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы