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

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

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

Войти через центр авторизации
Похожие вопросы