Проблемы с переносом проекта на хостинг

Различные вопросы по установке и настройке фреймворка, конфигурции веб-сервера и IDE.
Ответить
pioneer
Сообщения: 136
Зарегистрирован: 2013.03.10, 23:27

Проблемы с переносом проекта на хостинг

Сообщение pioneer »

Привет всем!
Проблема, собственно, вот в чем. Разрабатываю проект на CMS Yupe, скопировал его на хостинг – при переходе на сайт вижу "белую страницу" в браузере, а в логе хоста выдает вот что:
PHP Fatal error: Uncaught exception 'CException' with message 'Application base path "D:\\OpenServer\\domains\\margo\\protected\\config/.." is not a valid directory.' in /var/www/vhosts/margo/www/vendor/yiisoft/yii/framework/base/CApplication.php:262\nStack trace:\n#0 /var/www/vhosts/margo/www/vendor/yiisoft/yii/framework/base/CApplication.php(136): CApplication->setBasePath('D:\\OpenServer\\d...')\n#1 /var/www/vhosts/margo/www/vendor/yiisoft/yii/framework/YiiBase.php(125): CApplication->__construct(Array)\n#2 /var/www/vhosts/margo/www/vendor/yiisoft/yii/framework/YiiBase.php(98): YiiBase::createApplication('CWebApplication', Array)\n#3 /var/www/vhosts/margo/www/index.php(37): YiiBase::createWebApplication(Array)\n#4 {main}\n thrown in /var/www/vhosts/margo/www/vendor/yiisoft/yii/framework/base/CApplication.php on line 262
как видно из ошибки, лог сервера почему-то ругается на локальные пути!? сначала погрешил на папки public/assets и protected/runtime - почистил их, установил им права 777 - не помогло...
в чем может быть проблема? заранее огромное спасибо за помощь! :)
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Проблемы с переносом проекта на хостинг

Сообщение samdark »

В тексте ошибки есть ответ:
Application base path "D:\\OpenServer\\domains\\margo\\protected\\config/.." is not a valid directory.
Думаю, на хостинге никакого OpenServer нет, что значит одно: где-то в проекте это прописано. Надо найти и поправить.
Аватара пользователя
sluchainiyznak
Сообщения: 617
Зарегистрирован: 2013.05.19, 17:51
Откуда: ХМАО-Югра, г. Сургут
Контактная информация:

Re: Проблемы с переносом проекта на хостинг

Сообщение sluchainiyznak »

Наверняка этот путь жестко прописан в index.php
pioneer
Сообщения: 136
Зарегистрирован: 2013.03.10, 23:27

Re: Проблемы с переносом проекта на хостинг

Сообщение pioneer »

Вы правы. Само собой, на хостинге никакого OpenServer'a нет - это почему-то приложение каким-то пока непонятным для меня образом хранит где-то у себя мои локальные пути, будучи при этом уже на хостинге и на другой ОС. По поводу index.php - вот эта запись подозрительна (хотя конфиги находит корректно):

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

$base = require dirname(__FILE__) . '/../protected/config/main.php'; 
по пути, на который ругается PHP [protected/config/...], а если быть точнее, то 'Application base path' - насколько я понимаю - это параметр basePath в конфиге, то установлен он следующим образом (а чтобы не морочить Вам голову, скину лучше весь конфиг main.php - может тогда что-то лучше прояснится):

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

// Определяем алиасы:
Yii::setPathOfAlias('application', dirname(__FILE__) . '/../');
Yii::setPathOfAlias('public', dirname($_SERVER['SCRIPT_FILENAME']));
Yii::setPathOfAlias('yupe', dirname(__FILE__) . '/../modules/yupe/');
Yii::setPathOfAlias('vendor', dirname(__FILE__) . '/../../vendor/');

return array(
    'basePath'          => dirname(__FILE__) . '/..',   // ВОТ ЭТОТ ПАРАМЕТР. При echo Yii::app()->basePath выводит полный локальный путь к папке protected, а именно: D:\OpenServer\domains\margo\protected 
    'defaultController' => 'site',             // контроллер по умолчанию
    'name'              => 'My Test App',             // название приложения
    'language'          => 'ru',               // язык по умолчанию
    'sourceLanguage'    => 'en',
    'theme'             => 'default',          // тема оформления по умолчанию
    'charset'           => 'UTF-8',
    'controllerNamespace' => 'application\controllers',
    'preload'           => defined('YII_DEBUG')
                            && YII_DEBUG
                            && is_writable(Yii::getPathOfAlias('application.runtime'))
                            && is_writable(Yii::getPathOfAlias('public.assets')),
                           //  ? array('debug') : array(),
    'aliases' => array(
        'bootstrap' => realpath(Yii::getPathOfAlias('vendor') . '/clevertech/yii-booster/src'),
    ),
    'import' => array(
        // подключение основых путей
        'application.modules.yupe.models.*',
        'application.modules.yupe.widgets.*',
        'application.modules.yupe.controllers.*',
        'application.modules.yupe.extensions.tagcache.*',
    ),
    // подключение и конфигурирование модулей,
    // подробнее: http://www.yiiframework.ru/doc/guide/ru/basics.module
    'modules' => array(
        'yupe'  => array(
            'class'        => 'application.modules.yupe.YupeModule',
            'cache'        => true,
        ),
        // на продакшне gii рекомендуется отключить, подробнее: http://www.yiiframework.com/doc/guide/1.1/en/quickstart.first-app
        /*'gii'   => array(
            'class'          => 'system.gii.GiiModule',
            'password'       => 'giiYupe',
            'generatorPaths' => array(
                'application.modules.yupe.extensions.yupe.gii',
            ),
            'ipFilters'=>array(),
        ),*/
    ),

    //comment this behaviors if multilingual unnecessary
    'behaviors' => array(
        'onBeginRequest' => array(
            'class' => 'yupe\components\urlManager\LanguageBehavior'
         ),
    ),
    'params' => require dirname(__FILE__) . '/params.php',
    // конфигурирование основных компонентов (подробнее http://www.yiiframework.ru/doc/guide/ru/basics.component)
    'components' => array(
        'debug' => array(
            'class'   => 'vendor.zhuravljov.yii2-debug.Yii2Debug',
            'internalUrls' => false,
        ),
        // параметры подключения к базе данных, подробнее http://www.yiiframework.ru/doc/guide/ru/database.overview
        // используется лишь после установки Юпи:
        'db'        => file_exists(__DIR__ . '/db.php') ? require_once __DIR__ . '/db.php' : array(),
        'bootstrap' => array(
            'class' => 'bootstrap.components.Bootstrap',
            'responsiveCss'  => true,
            'fontAwesomeCss' => true,
        ),
        'eventManager' => array(
            'class'  => 'yupe\components\EventManager'
        ),
        'configManager' => array(
            'class' => 'yupe\components\ConfigManager',
        ),
        'moduleManager' => array(
            'class' => 'yupe\components\ModuleManager',
        ),
        // Работа с миграциями, обновление БД модулей
        'migrator'=>array(
            'class'=>'yupe\components\Migrator',
        ),
        // DAO simple wrapper:
        'dao' => array(
            'class' => 'yupe\components\DAO',
        ),
        'image' => array(
            'class'  => 'application\modules\yupe\components\image\Image',
        ),
        'uploadManager' => array(
            'class'  => 'application\modules\yupe\components\UploadManager',
        ),
        'themeManager'       => array(
            'class'          => 'CThemeManager',
            'basePath'       => dirname(__DIR__) . '/../themes',
        ),
        'cache' => array(
            'class' => 'CFileCache',
            'behaviors' => array(
                'clear' => array(
                    'class' => 'application.modules.yupe.extensions.tagcache.TaggingCacheBehavior',
                ),
            ),
        ),
        // конфигурирование urlManager, подробнее: http://www.yiiframework.ru/doc/guide/ru/topics.url
        'urlManager' => array(
            'class'          => 'yupe\components\urlManager\LangUrlManager', //comment this if if multilingual unnecessary
            //'class'          => 'CUrlManager', // default yii UrlManager
            'languageInPath' => true, //comment this if if multilingual unnecessary
            'langParam'      => 'language', //comment this if if multilingual unnecessary
            'urlFormat'      => 'path',
            'showScriptName' => false, // чтобы убрать index.php из url, читаем: http://yiiframework.ru/doc/guide/ru/quickstart.apache-nginx-config
            'cacheID'        => 'cache',
            'useStrictParsing' => true,
            'rules'            => array(
                // общие правила
                '/'                                                               => '/site/index',
                // для корректной работы устновщика
                '/install/default/<action:\w+>'                                   => '/install/default/<action>',
                '/backend'                                                        => 'yupe/backend/index',
                '/backend/login'                                                  => 'user/account/backendlogin',
                '/backend/<action:\w+>'                                           => 'yupe/backend/<action>',
                '/backend/<module:\w+>/<controller:\w+>'                          => '<module>/<controller>Backend/index',
                '/backend/<module:\w+>/<controller:\w+>/<action:\w+>/<id:\d+>'    => '<module>/<controller>Backend/<action>',
                '/backend/<module:\w+>/<controller:\w+>/<action:\w+>'             => '<module>/<controller>Backend/<action>',
                '/gii/<controller:\w+>/<action:\w+>'                              => 'gii/<controller>/<action>',
                '/site/<action:\w+>'                                              => 'site/<action>',
                '/debug/<controller:\w+>/<action:\w+>'                            => 'debug/<controller>/<action>', // Для  YiiDebugPanel
            )
        ),

        // конфигурируем компонент CHttpRequest для защиты от CSRF атак, подробнее: http://www.yiiframework.ru/doc/guide/ru/topics.security
        // РЕКОМЕНДУЕМ УКАЗАТЬ СВОЕ ЗНАЧЕНИЕ ДЛЯ ПАРАМЕТРА "csrfTokenName"
        // базовый класс CHttpRequest переопределен для загрузки файлов через ajax, подробнее: http://www.yiiframework.com/forum/index.php/topic/8689-disable-csrf-verification-per-controller-action/
        'request' => array(
            'class'                  => 'yupe\components\HttpRequest',
            'enableCsrfValidation'   => true,
            'enableCookieValidation' => true,
            'csrfCookie' => array(
                'httpOnly' => true,
            ),
            'csrfTokenName'          => 'MY_TKNNAME',
            'noCsrfValidationRoutes' => array('backend/image/image/AjaxImageUpload','backend/AjaxFileUpload'),
            'enableCookieValidation' => true, // подробнее: http://www.yiiframework.com/doc/guide/1.1/ru/topics.security#sec-4
        ),

        'session' => array(
            'cookieParams' => array(
                'httponly' => true,
            )
        ),
        // подключение компонента для генерации ajax-ответов
        'ajax' => array(
            'class' => 'yupe\components\AsyncResponse',
        ),

        // параметры логирования, подробнее http://www.yiiframework.ru/doc/guide/ru/topics.logging
        'log' => array(
            'class'  => 'CLogRouter',
            'routes' => array(
                array(
                    'class'  => 'CFileLogRoute',
                    'levels' => 'error, warning, info, trace', // на продакшн лучше оставить error, warning
                ),
            ),
        ),

        'errorHandler'=>array(
            // use 'site/error' action to display errors
            'errorAction'=>'site/error',
        ),
    ),
    'rules' => array(
        //подробнее http://yupe.ru/docs/yupe/userspace.config.html
    )
);
 
и на всякий случай index.php (лежит в папке public/):

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

if (!ini_get('date.timezone')) {
    date_default_timezone_set('Europe/Moscow');
}

// Setting internal encoding to UTF-8.
if(!ini_get('mbstring.internal_encoding')) {
    @ini_set("mbstring.internal_encoding", 'UTF-8');
    mb_internal_encoding('UTF-8');
}

define('YII_APP_TYPE', 'web');

// две строки закомментировать на продакшн сервере
define('YII_DEBUG', true);
defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL', 3);

require dirname(__FILE__) . '/../vendor/yiisoft/yii/framework/yii.php';

$base = require dirname(__FILE__) . '/../protected/config/main.php';

$confManager = new yupe\components\ConfigManager();
$config = $confManager->merge($base);

require dirname(__FILE__).'/../vendor/autoload.php';

Yii::createWebApplication($config)->run();
 
pioneer
Сообщения: 136
Зарегистрирован: 2013.03.10, 23:27

Re: Проблемы с переносом проекта на хостинг

Сообщение pioneer »

Разобрался. Все дело было в protected/config/modues/cached_settings_web.php - это кэш настроек приложения, его ВСЕГДА нужно удалять перед переносом проекта на хостинг.
Ответить