Yii приложение не работает на linux-системе

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
<Flash>
Сообщения: 56
Зарегистрирован: 2012.10.02, 18:16

Yii приложение не работает на linux-системе

Сообщение <Flash> » 2014.05.15, 02:04

Всем доброго времени суток. Столкнулся со следующей проблемой. Разрабатывал сайт на своей машине с windows. Все было ок. После деплоя сайта на сервер с linux он перестал корректно работать, а именно, не удается подключить классы моделей. Вот что указано в конфиге main.php:

Код: Выделить всё

..
'import' => array(
        'application.models.*',
        'application.components.*',
    ),

..
RewriteEngine на апаче настроен и работает правильно(запускаются контроллеры, соответствующие запросу). Название моделей = Название класса + .php. Yii::getPathOfAlias('application.models') выдает правильную директорию.
Что самое интересное, если в import указать полный путь до определенной модели, все работает:

Код: Выделить всё

..
'import' => array(
        'application.models.*',
        'application.models.Tag',
        'application.components.*',
    ),
..
//Модель Tag подключается
 
Такие дела. Заранее спасибо за помощь.

lancedevnull
Сообщения: 1268
Зарегистрирован: 2013.07.17, 17:37

Re: Yii приложение не работает на linux-системе

Сообщение lancedevnull » 2014.05.15, 02:11

линукс регистрозависимый, проверяйте регистр классов, имен файлов

<Flash>
Сообщения: 56
Зарегистрирован: 2012.10.02, 18:16

Re: Yii приложение не работает на linux-системе

Сообщение <Flash> » 2014.05.15, 11:38

lancedevnull писал(а):линукс регистрозависимый, проверяйте регистр классов, имен файлов
Так это я первым делом проверил. И если бы, например, в модели Tag была бы совершена ошибка в имени или названии класса, то вот эта штука:

Код: Выделить всё

'import' => array(
        ..
        'application.models.Tag',
        ..
)
тоже бы не сработала. Разве нет?

Аватара пользователя
yiijeka
Сообщения: 3081
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Yii приложение не работает на linux-системе

Сообщение yiijeka » 2014.05.15, 11:45

Не сработала бы, значит в коде new tag написано :)

<Flash>
Сообщения: 56
Зарегистрирован: 2012.10.02, 18:16

Re: Yii приложение не работает на linux-системе

Сообщение <Flash> » 2014.05.15, 11:58

yiijeka писал(а):Не сработала бы, значит в коде new tag написано :)
В том то и дело, что в коде:

Код: Выделить всё

Tag::model()->findAll(); 
Регистры везде соблюдены и корректны.

Аватара пользователя
yiijeka
Сообщения: 3081
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Yii приложение не работает на linux-системе

Сообщение yiijeka » 2014.05.15, 12:02

Не знаю тогда. Дайте полный лог ошибки и строку.

<Flash>
Сообщения: 56
Зарегистрирован: 2012.10.02, 18:16

Re: Yii приложение не работает на linux-системе

Сообщение <Flash> » 2014.05.15, 12:12

Я чуть не запамятовал. Для компонента user я использую свой класс, наследованный от CWebUser. Этот класс использует библиотеку, которая подрубает свой autoload. Но в конце всех функций, где идет обращение к этой библиотеке , я пишу:

Код: Выделить всё

spl_autoload_register(array('YiiBase', 'autoload')); 
Может быть здесь проблема? Еще раз повторюсь - на windows все ок.

Аватара пользователя
solo
Сообщения: 320
Зарегистрирован: 2013.03.08, 19:59
Откуда: Ukraine, VINNITSA

Re: Yii приложение не работает на linux-системе

Сообщение solo » 2014.05.15, 12:17

Права папки models какие?

<Flash>
Сообщения: 56
Зарегистрирован: 2012.10.02, 18:16

Re: Yii приложение не работает на linux-системе

Сообщение <Flash> » 2014.05.15, 12:20

solo писал(а):Права папки models какие?
755

Аватара пользователя
solo
Сообщения: 320
Зарегистрирован: 2013.03.08, 19:59
Откуда: Ukraine, VINNITSA

Re: Yii приложение не работает на linux-системе

Сообщение solo » 2014.05.15, 12:23

покажи стек ошибки.

Аватара пользователя
yiijeka
Сообщения: 3081
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Yii приложение не работает на linux-системе

Сообщение yiijeka » 2014.05.15, 12:28

<Flash> писал(а):Я чуть не запамятовал. Для компонента user я использую свой класс, наследованный от CWebUser. Этот класс использует библиотеку, которая подрубает свой autoload. Но в конце всех функций, где идет обращение к этой библиотеке , я пишу:

Код: Выделить всё

spl_autoload_register(array('YiiBase', 'autoload'));
Может быть здесь проблема? Еще раз повторюсь - на windows все ок.
spl_autoload_unregister(array('YiiBase', 'autoload')); есть же перед участком где "подрубает свой autoload"

и полный лог ошибки и строку уже наконец.

<Flash>
Сообщения: 56
Зарегистрирован: 2012.10.02, 18:16

Re: Yii приложение не работает на linux-системе

Сообщение <Flash> » 2014.05.15, 12:36

Строка:

Код: Выделить всё

$tags = Tag::model()->findAll(); 
Ошибка:

Код: Выделить всё

An exception occurred: include(Tag.php): failed to open stream: No such file or directory in /var/www/minecraft/data/www/minecraft-social.com/yii/framework/YiiBase.php on line 427
XenForo_Application::handlePhpError() in /var/www/minecraft/data/www/minecraft-social.com/yii/framework/YiiBase.php at line 427
YiiBase::autoload() in /var/www/minecraft/data/www/minecraft-social.com/yii/framework/YiiBase.php at line 427
YiiBase::autoload()
spl_autoload_call() in /var/www/minecraft/data/www/minecraft-social.com/protected/controllers/ServerController.php at line 26
ServerController->actionIndex() in /var/www/minecraft/data/www/minecraft-social.com/yii/framework/web/actions/CInlineAction.php at line 49
CInlineAction->runWithParams() in /var/www/minecraft/data/www/minecraft-social.com/yii/framework/web/CController.php at line 308
CController->runAction() in /var/www/minecraft/data/www/minecraft-social.com/yii/framework/web/CController.php at line 286
CController->runActionWithFilters() in /var/www/minecraft/data/www/minecraft-social.com/yii/framework/web/CController.php at line 265
CController->run() in /var/www/minecraft/data/www/minecraft-social.com/yii/framework/web/CWebApplication.php at line 282
CWebApplication->runController() in /var/www/minecraft/data/www/minecraft-social.com/yii/framework/web/CWebApplication.php at line 141
CWebApplication->processRequest() in /var/www/minecraft/data/www/minecraft-social.com/yii/framework/base/CApplication.php at line 180
CApplication->run() in /var/www/minecraft/data/www/minecraft-social.com/index.php at line 4
Библиотека, как вы поняли, использует классы XenForo.
yiijeka писал(а):spl_autoload_unregister(array('YiiBase', 'autoload')); есть же перед участком где "подрубает свой autoload"
Да, есть.

Аватара пользователя
yiijeka
Сообщения: 3081
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Yii приложение не работает на linux-системе

Сообщение yiijeka » 2014.05.15, 13:12

Хм, посмотрите, что возвращает $className в 427 строке YiiBase?

<Flash>
Сообщения: 56
Зарегистрирован: 2012.10.02, 18:16

Re: Yii приложение не работает на linux-системе

Сообщение <Flash> » 2014.05.15, 15:41

yiijeka писал(а):Хм, посмотрите, что возвращает $className в 427 строке YiiBase?
Доступа к linux машине сейчас, к сожалению, нет. На моем компе с windows $classname принимает значение Tag. Ничего не обычного.

<Flash>
Сообщения: 56
Зарегистрирован: 2012.10.02, 18:16

Re: Yii приложение не работает на linux-системе

Сообщение <Flash> » 2014.05.15, 22:24

Up, что-ли.


Аватара пользователя
yiijeka
Сообщения: 3081
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Yii приложение не работает на linux-системе

Сообщение yiijeka » 2014.05.16, 08:52

Покажите ServerController->actionIndex

<Flash>
Сообщения: 56
Зарегистрирован: 2012.10.02, 18:16

Re: Yii приложение не работает на linux-системе

Сообщение <Flash> » 2014.05.16, 09:13

yiijeka писал(а):Покажите ServerController->actionIndex

Код: Выделить всё

public function actionIndex() {
        $isGuest = Yii::app()->user->getIsGuest();
        $this->layout = 'main';
        $versions = Version::model()->findAll();
        $tags = Tag::model()->findAll();
        $this->render('monitoring', array('versions' => $versions, 'tags' => $tags, 'isGuest' => $isGuest));
    } 
Замечу, что подобная ошибка возникает в любом контроллере, где используются модели(в том числе, унаследованные и от CFormModel)/компоненты. Если в import я прописываю все импорты вручную:

Код: Выделить всё

'import'=>array(
        'application.models.Tag',
         'application.models.Version',
          ...
        'application.components.SuperComponent',
        'application.components.SuperComponent2',
    ),
 
модели и компоненты подключаются, но появляется аналогичная ошибка для отображения.

Аватара пользователя
flashimage
Сообщения: 1517
Зарегистрирован: 2011.01.23, 12:43

Re: Yii приложение не работает на linux-системе

Сообщение flashimage » 2014.05.16, 09:16

Может tag у вас это модель модуля?
Бранчи это гомеоморфические эндофункторы, которые мапятся на субманифолды пространства Гилберта.

Аватара пользователя
yiijeka
Сообщения: 3081
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Yii приложение не работает на linux-системе

Сообщение yiijeka » 2014.05.16, 09:16

Чёт я не понял тогда
вызывается ServerController->actionIndex() in /var/www/minecraft/data/www/minecraft-social.com/yii/framework/web/actions/CInlineAction.php at line 49
а потом вызывается spl_autoload_call() in /var/www/minecraft/data/www/minecraft-social.com/protected/controllers/ServerController.php at line 26 ? т.е. вы отключили spl_autoload_unregister(array('YiiBase', 'autoload')); а потом выполняете index а потом spl_autoload_call а потом включаете spl_autoload_register(array('YiiBase', 'autoload')); ?

Ответить