Zend ACL - необычные ошибки в файле журнала

Это немного странно, потому что я вижу эту кучу ошибок в своих файлах журнала, и ни одна из них не соответствует каким-либо ресурсам, которые у меня есть. На самом деле я даже не узнаю ни одного из этих ресурсов, которые отображаются в файлах ошибок.

2010-12-26T12:19:46+00:00 ERR (3): Error Message Resource 'res' not found
2010-12-26T12:19:46+00:00 ERR (3): Stack Trace #0 /var/www/application/library/Zend/Acl.php(691): Zend_Acl->get('res')
#1 /var/www/application/library/My/Controller/Plugin/Acl.php(29): Zend_Acl->isAllowed('guest', 'res', '2127250264.html')

2010-12-26T12:50:21+00:00 ERR (3): Error Message Resource 'fcs' not found
2010-12-26T12:50:21+00:00 ERR (3): Stack Trace #0 /var/www/application/library/Zend/Acl.php(691): Zend_Acl->get('fcs')
#1 /var/www/application/library/My/Controller/Plugin/Acl.php(29): Zend_Acl->isAllowed('guest', 'fcs', 'ident2')


2010-12-26T12:50:22+00:00 ERR (3): Error Message Resource 'open' not found
2010-12-26T12:50:22+00:00 ERR (3): Stack Trace #0 /var/www/application/library/Zend/Acl.php(691): Zend_Acl->get('open')
#1 /var/www/application/library/My/Controller/Plugin/Acl.php(29): Zend_Acl->isAllowed('guest', 'open', '1')

Resource res, fcs, open или 2127250264.html - это не ресурсы в моем приложении, поэтому я не уверен, что означают эти ошибки.

Может ли кто-нибудь пролить свет на то, как я могу это отладить.


РЕДАКТИРОВАТЬ

class My_Controller_Plugin_Acl extends Zend_Controller_Plugin_Abstract {
  private $_acl = null;

  public function __construct(Zend_Acl $acl) {
    $this->_acl = $acl;
  }

  public function preDispatch(Zend_Controller_Request_Abstract $request) {  

    //As in the earlier example, authed users will have the role user
    $role = (Zend_Auth::getInstance()->hasIdentity())
          ? 'user'
          : 'guest';

    $controller = $request->getControllerName();
    $action = $request->getActionName();

    $requestUri = Zend_Controller_Front::getInstance()->getRequest()->getRequestUri();
    $session = new Zend_Session_Namespace('lastRequest');       
    // Temporary fix not to save view-image as last requested URL
    if(strpos($requestUri, 'snapshot')==false && $controller != 'register' && $controller != 'login' && $action != 'view-image' && $action != 'play-video' && $action != 'config') {
        //save the requested action only if it is not login
        $session->lastRequestUri = $requestUri;
    }


    if(!$this->_acl->isAllowed($role, $controller, $action)) {    
      //If the user has no access we send him elsewhere by changing the request
      $request->setModuleName('default')
              ->setControllerName('login')
              ->setActionName('log');
    }
  }
}

И это класс, в котором я определил ресурсы

class My_Acl extends Zend_Acl {
  public function __construct() {
    //Add a new role called "guest"
    $this->addRole(new Zend_Acl_Role('guest'));

    //Add a role called user, which inherits from guest
    $this->addRole(new Zend_Acl_Role('user'), 'guest');

    //Add a resource called page
    $this->add(new Zend_Acl_Resource('video'));
    $this->add(new Zend_Acl_Resource('error'));
    $this->add(new Zend_Acl_Resource('index'));
    $this->add(new Zend_Acl_Resource('login'));
    $this->add(new Zend_Acl_Resource('register'));
    $this->add(new Zend_Acl_Resource('profile'));
    $this->add(new Zend_Acl_Resource('edit-profile'));
    $this->add(new Zend_Acl_Resource('css'));
    $this->add(new Zend_Acl_Resource('js'));
    $this->add(new Zend_Acl_Resource('images'));
    $this->add(new Zend_Acl_Resource('snapshots'));



    //Finally, we want to allow guests to view pages
    $this->allow('guest', 'css');
    $this->allow('guest', 'js');
    $this->allow('guest', 'snapshots');
    $this->allow('guest', 'images');
    $this->allow('guest', 'error');
    $this->allow('guest', 'login');
    $this->allow('guest', 'index');
    $this->allow('guest', 'register');
    $this->allow('guest', 'profile','view-profile');
    $this->allow('guest', 'profile','view-image');
    $this->allow('guest', 'profile','all-videos');
    $this->allow('guest', 'profile','all-fans');
    $this->allow('guest', 'profile','favorite-artists');
    $this->allow('guest', 'profile','favorite-videos');
    $this->allow('guest', 'video','display-thumb');

    $this->allow('guest', 'video', 'config');
    $this->allow('guest', 'video', 'play');
    $this->allow('guest', 'video', 'play-video');
    $this->allow('guest', 'video', 'new-videos');
    $this->allow('guest', 'video', 'category');
    $this->allow('guest', 'video', 'index');
    $this->allow('guest', 'video', 'search');
    $this->allow('user', 'video');
    $this->allow('user', 'profile');
  }
}


person Gublooo    schedule 26.12.2010    source источник
comment
покажите нам код в Acl.php, пожалуйста.   -  person tawfekov    schedule 26.12.2010
comment
Обновили вопрос кодом - Спасибо   -  person Gublooo    schedule 26.12.2010


Ответы (2)


Я бы предположил (не видя вашего My / Controller / Plugin / Acl.php), что вы получаете свои ресурсы из имени контроллера / модуля / действия. И кто-то получил доступ к URL-адресу, который вы не ожидаете посетить (возможно, из более старой версии вашего приложения, которая раньше имела другие URL-адреса).

person Tomáš Fejfar    schedule 26.12.2010
comment
Нет, это абсолютно новый сайт - он еще не запущен в производство - все еще находится в стадии тестирования, поэтому более старой версии сайта нет. Я разместил код для Acl.php - Спасибо за ваше время - person Gublooo; 26.12.2010
comment
Я предполагаю, что ни один из определенных маршрутов не вызывает контроллеры или действия (используемые в качестве ресурсов и привилегий соответственно), как вы видите в журналах ошибок. Может, и свою маршрутизацию выложить? В противном случае, похоже, что ответ @ Tomáš кажется наиболее вероятным. Вы уверены, что никто другой не обращается к приложению, возможно, используя неожиданные URL-адреса? Или, может быть, какой-то javascript или css требует чего-то неожиданного? - person David Weinraub; 26.12.2010
comment
Спасибо, Дэвид - ну, я уверен, что никто другой не имеет доступа к приложению - потому что я получаю аналогичные ошибки при тестировании на локальном хосте - имена ресурсов отличаются, как сегодня утром на моем локальном хосте - ошибки были объявлены ресурсом не найдены или Ресурс «очистка» не найден - я выполнил поиск по этим именам ресурсов во всех файлах css и js и других файлах, которые мне не повезло, но я не просматривал внешние файлы js, размещенные на facebook и т. Д. Спасибо - person Gublooo; 27.12.2010
comment
для меня кажется, что что-то пытается получить доступ к чему-то где-то, но вместо этого он обращается к вашему серверу. Я бы проверил и поискал в журнале apache на localhost эти URL-адреса. Вы бы увидели, куда именно идет запрос;) - person Tomáš Fejfar; 30.12.2010

Недавно у меня были такие же странные сообщения. Как и предложил Томаш, я просмотрел журналы доступа к apache и обнаружил, что отсутствовали файлы, которые были запрошены одним из моих листов css.

Поэтому, когда у вас есть отсутствующий файл в вашей общедоступной папке, вы можете получить такие ошибки, как

2011-02-22T02:44:49+03:00 DEBUG (7): Resource 'css' not found /usr/local/Zend/Acl.php(777): Zend_Acl->get('css') /home/www/public_html/application/plugins/AccessControl.php(61): Zend_Acl->isAllowed('guest', 'css', 'img')

Чтобы решить эту проблему - просто найдите и удалите запросы на отсутствующие файлы в вашем css, html и т. Д.

person yentsun    schedule 21.02.2011