Русскоязычный форум, посвященный фреймворку Kohana
http://forum.kohanaframework.su/

Проблема после переноса на хостинг
http://forum.kohanaframework.su/viewtopic.php?f=31&t=593
Страница 1 из 3

Автор:  xunicorn [ 21 мар 2013, 12:44 ]
Заголовок сообщения:  Проблема после переноса на хостинг

Собственно сабж. На локалке - работает все прекрасно, а на хостинге - выдает ошибку.
Код:
Kohana_HTTP_Exception [ 404 ]: The requested URL / was not found on this server.

SYSPATH/classes/Kohana/Request/Client/Internal.php [ 79 ]

74          if ( ! class_exists($prefix.$controller))
75          {
76             throw HTTP_Exception::factory(404,
77                'The requested URL :uri was not found on this server.',
78                array(':uri' => $request->uri())
79             )->request($request);
80          }
81
82          // Load the controller using reflection
83          $class = new ReflectionClass($prefix.$controller);
84

    SYSPATH/classes/Kohana/Request/Client.php [ 114 ] » Kohana_Request_Client_Internal->execute_request(arguments)

    SYSPATH/classes/Kohana/Request.php [ 990 ] » Kohana_Request_Client->execute(arguments)

    DOCROOT/index.php [ 112 ] » Kohana_Request->execute()


как ее можно исправить?

Автор:  Sergey [ 21 мар 2013, 13:22 ]
Заголовок сообщения:  Re: Проблема после переноса на хостинг

Покажите роутинг

Автор:  xunicorn [ 21 мар 2013, 13:24 ]
Заголовок сообщения:  Re: Проблема после переноса на хостинг

Код:
<?php

/**
 * Set the routes. Each route must have a minimum of a name, a URI and a set of
 * defaults for the URI.
 */

    
Route::set('admin''admin')
        ->
defaults(array(
            
'directory'  => 'admin',
            
'controller' => 'main',
            
'action'     => 'index',
    ));
    
Route::set('admin_categories''admin/categories/<action>(/<category_id>)', array('action' => 'view|add''category_id' => '.+'))
        ->
defaults(array(
            
'directory'  => 'admin',
            
'controller' => 'categories'
    
));

    
Route::set('admin_articles''admin/articles/<action>(/<category_id>(/<article_id>))', array('action' => 'view|add''category_id' => '[0-9]+''article_id' => '[0-9]+'))
        ->
defaults(array(
            
'directory'  => 'admin',
            
'controller' => 'articles'    
    
));

        
Route::set('default''(<controller>(/<action>(/<id>)))')
    ->
defaults(array(
        
'controller' => 'main',
        
'action'     => 'index',
    ));

?>

Автор:  Sergey [ 21 мар 2013, 13:31 ]
Заголовок сообщения:  Re: Проблема после переноса на хостинг

Поправьте роутинг.
Для начала сделайте его читаемей, чище и универсальнее. Что то вроде этого:

# Для администратора

Код:
    Route::set('admin', 'admin(/<controller>)(/<action>)(/<id>)(/p<page>)', array(
        'id'         => '\d+',
        'page'       => '\d+'
    ))
    ->defaults(array(
        'directory'  => 'admin',
        'controller' => 'dashboard',
    ));
 


# Категории

Код:
Route::set('admin/category', 'admin/categories(/<action>(/<id>))(/p<page>)', array(
        'id'         => '\d+',
        'page'       => '\d+',
        'action'     => 'list|add|edit|delete'
    ))
    ->defaults(array(
        'directory'  => 'admin',
        'controller' => 'category',
        'action'     => 'list',
    )); 


# Articles

Код:
    Route::set('admin/article', 'admin/articles(/<action>)/<id>(/p<page>)', array(
        'id'         => '\d+',
        'page'       => '\d+',
        'action'     => 'list|add|edit|delete|confirm'
    ))
    ->defaults(array(
        'directory'  => 'admin',
        'controller' => 'article',
        'action'     => 'list',
    )); 


# По умолчанию

Код:
    Route::set('default', '(<controller>(/<action>(/<id>)))')
        ->defaults(array(
            'controller' => 'welcome',
            'action'     => 'index',
        ));
 

Автор:  Sergey [ 21 мар 2013, 13:33 ]
Заголовок сообщения:  Re: Проблема после переноса на хостинг

Кеширование роутинга в продакшене:
Код:
if ( ! Route::cache())
{
    
//  ...
    //  Какие то роуты
    //  ...

    
Route::set('default''(<controller>(/<action>(/<id>)))')
        ->
defaults(array(
            
'controller' => 'welcome',
            
'action'     => 'index',
        ));

    
// Cache the routes in production
    
Route::cache(Kohana::$environment === Kohana::PRODUCTION);
}
 

Автор:  xunicorn [ 21 мар 2013, 14:02 ]
Заголовок сообщения:  Re: Проблема после переноса на хостинг

Код:
   public static function cache($save = FALSE, $append = FALSE)
   {
      if ( ! Route::cache())
      {

         Route::set('admin', 'admin')
               ->defaults(array(
                  'directory'  => 'admin',
                  'controller' => 'main',
                  'action'     => 'index',
            ));
            
         Route::set('admin_categories', 'admin/categories/(<action>(/<category_id>))',
               array(
                     'action' => 'view|add',
                     'category_id' => '\d+')
                  )
               ->defaults(array(
                  'directory'  => 'admin',
                  'controller' => 'category',
                  'action'    => 'view'
            ));

            
         Route::set('admin_articles', 'admin/articles/(<action>(/<category_id>(/<article_id>)))',
               array(
                  'action' => 'view|add',
                  'category_id' => '\d+',
                  'article_id' => '\d+')
                  )
               ->defaults(array(
                  'directory'  => 'admin',
                  'controller' => 'article',
                  'action'    => 'view'
            ));

               
         Route::set('default', '(<controller>(/<action>(/<id>)))')
            ->defaults(array(
               'controller' => 'main',
               'action'     => 'index',
            ));

         // Cache the routes in production
         Route::cache(Kohana::$environment === Kohana::PRODUCTION);
      }
      
      if ($save === TRUE)
      {
         try
         {
            // Cache all defined routes
            Kohana::cache('Route::cache()', Route::$_routes);
         }
         catch (Exception $e)
         {
            // We most likely have a lambda in a route, which cannot be cached
            throw new Kohana_Exception('One or more routes could not be cached (:message)', array(
                  ':message' => $e->getMessage(),
               ), 0, $e);
         }
      }
      else
      {
         if ($routes = Kohana::cache('Route::cache()'))
         {
            if ($append)
            {
               // Append cached routes
               Route::$_routes += $routes;
            }
            else
            {
               // Replace existing routes
               Route::$_routes = $routes;
            }

            // Routes were cached
            return Route::$cache = TRUE;
         }
         else
         {
            // Routes were not cached
            return Route::$cache = FALSE;
         }
      }
   }



вот мой обновленный метод. Но ошибка на хостинге не проходит.

Автор:  Sergey [ 21 мар 2013, 14:59 ]
Заголовок сообщения:  Re: Проблема после переноса на хостинг

1.
Код:
 public static function cache($save = FALSE, $append = FALSE)
? :shock: т.е. роутинг не в bootstrap.php/init.php
2. кеш чистили на сервере

Автор:  xunicorn [ 25 мар 2013, 23:45 ]
Заголовок сообщения:  Re: Проблема после переноса на хостинг

1. Я использую эту статью, для кеша роутинга.
2. Роутинги я вынес в другой файл, и в конце bootstrap.php, где должны быть роутинги - я подключаю этот файл.

Автор:  rain2 [ 26 мар 2013, 05:18 ]
Заголовок сообщения:  Re: Проблема после переноса на хостинг

локалке винда , а хостинг линуксовый?

Автор:  xunicorn [ 26 мар 2013, 12:36 ]
Заголовок сообщения:  Re: Проблема после переноса на хостинг

rain2 писал(а):
локалке винда , а хостинг линуксовый?


да

Страница 1 из 3 Часовой пояс: UTC + 4 часа [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/