Страница не найдена по URL-адресу запроса в приложении Zend 2 Framework

Я новичок в zend framework и пытаюсь настроить zend. Я успешно установил приложение zendskeleton в Window 7 и XAMPP.

После установки я создаю новый модуль Альбом в соответствии с определением в руководстве пользователя. Я сделал весь код и страницы в соответствии с руководством, но после этого мне удалось открыть модуль альбома. у меня ошибка 404 не найден.

вот код

  1. application.config

     return array(
    
     'modules' => array(
     'Application','Album',
     ),
    
    'module_paths' => array(
    './module',
    './vendor',
    ),
    
    'config_glob_paths' => array(
    'config/autoload/{,*.}{global,local}.php',
     ),
    
      ),
        );
    
  2. module.config

     return array(
        'controllers' => array(
         'invokables' => array(
         'Album\Controller\Album' => 'Album\Controller\AlbumController',
         ),
          ),
          'router' => array(
           'routes' => array(
             'album' => array(
              'type' => 'segment',
                 'options' => array(
                     'route' => '/album[/][:action][/:id]',
                         'constraints' => array(
                             'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                                 'id' => '[0-9]+',
                                 ),
                                 'defaults' => array(
                                     'controller' => 'Album\Controller\Album',
                                         'action' => 'index',
                             ),
                         ),
                     ),
                 ),
             ),
    
                                 'view_manager' => array(
                                 'template_path_stack' => array(
                                 'album' => __DIR__ . '/../view',
                                 ),
                            ),
                        );
    
  3. Module.php

    namespace Album;
    
     // Add these import statements:
     use Album\Model\Album;
     use Album\Model\AlbumTable;
     use Zend\Db\ResultSet\ResultSet;
     use Zend\Db\TableGateway\TableGateway;
    
     class Module
     {
      // getAutoloaderConfig() and getConfig() methods here
    
    
    
     // Add this method:
      public function getServiceConfig()
       {
          return array(
          'factories' => array(
          'Album\Model\AlbumTable' => function($sm) {
           $tableGateway = $sm->get('AlbumTableGateway');
           $table = new AlbumTable($tableGateway);
           return $table;
       },
         'AlbumTableGateway' => function ($sm) {
          $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
          $resultSetPrototype = new ResultSet();
          $resultSetPrototype->setArrayObjectPrototype(new Album());
          return new TableGateway('album', $dbAdapter, null, $resultSetPrototype);
        },
       ),
       );
       }
        }
    
  4. httpd-vhosts.conf

     <VirtualHost *:81>
     ServerName zf2-tutorial.localhost
     DocumentRoot "C:/xampp\htdocs/ZendSkeletonApplication/ZendSkeletonApplication-master/public"
     SetEnv APPLICATION_ENV "development"
     <Directory C:/xampp\htdocs/ZendSkeletonApplication/ZendSkeletonApplication-master/public>
      DirectoryIndex index.php
      AllowOverride All
      Order allow,deny
      Allow from all
      </Directory>
      </VirtualHost>
    
  5. запись хоста в system32

      127.0.0.1:8081       zf2-tutorial.localhost
    

введите здесь описание изображения

Как я могу справиться с этим. Спасибо


person Anshul Parashar    schedule 25.07.2014    source источник


Ответы (4)


когда вы указываете своим корнем документа apache на C:/xampp\htdocs/ZendSkeletonApplication/ZendSkeletonApplication-master/public

вам нужно использовать в браузере этот адрес http://zf2-tutorial.localhost:8081/album а не такой как вы написали http://zf2-tutorial.localhost/ZendSkeletonApplication/ZendSkeletonApplication-master/public/album

этот URL-адрес указывает на другой модуль/местоположение.

//редактировать

если это не работает, проверьте папку /public zf2, если там присутствует файл .htaccess, в противном случае используйте файл из скелетного приложения Zend здесь https://github.com/zendframework/ZendSkeletonApplication/blob/master/public/.htaccess

пожалуйста, проверьте также свою запись apache vhost, если port соответствует вашему файловому порту windows host.

убедитесь, что apache ModRewrite загружен!

person ins0    schedule 25.07.2014
comment
я вызываю URL-адрес zf2-tutorial.localhost/album, но браузер не распознает его... см. обновления выше - person Anshul Parashar; 25.07.2014
comment
похоже у вас нет файла .htaccess или даже ModRewrite не включен - person ins0; 25.07.2014
comment
zf2-tutorial.localhost тоже не работает..куда .htaccess ставить ? , а в 'http.config' я уже включил 'ModRewrite' - person Anshul Parashar; 25.07.2014
comment
проверьте папку zf2 /public на наличие файла .htaccess если не используете этот файл github.com/zendframework/ZendSkeletonApplication/blob/master/ - person ins0; 25.07.2014
comment
Спасибо за ответ. у меня уже есть этот файл public directory - person Anshul Parashar; 25.07.2014
comment
в моем http.config файле mod_rewrite раскомментировано, и я также пишу <Directory /> AllowOverride FileInfo Allow from all </Directory> согласно руководству пользователя - person Anshul Parashar; 25.07.2014
comment
Давайте продолжим это обсуждение в чате. - person ins0; 25.07.2014

Эта ошибка возникает из-за основных неправильных конфигураций в вашей настройке.

  1. Я не использую окна в течение длительного времени, но вы используете как прямую, так и обратную косую черту в своих путях. Во-первых, вы должны найти правильный разделитель каталогов для Windows и придерживаться его. Это кажется проблематичным: C:/xampp\htdocs/foo/bar/public
  2. Вы определяете виртуальный хост, который прослушивает любой IP-адрес на порту 81 (*:81), запись хоста system32, которая указывает на порт 8081 как псевдоним zf2-tutorial.localhost, и пытаетесь вызвать zf2-tutorial.localhost/album URL-адрес, используя порт 80. Получение такой ошибки вполне нормально.

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

person edigu    schedule 25.07.2014
comment
Спасибо за ответ. извините за ошибку. я обновил, все равно не работает - person Anshul Parashar; 25.07.2014
comment
я уже внес изменения в файл http.conf «разрешить информацию о файле» и файл «vhost» - person Anshul Parashar; 25.07.2014

Кажется, вам не хватает записи vhost на вашем веб-сервере. Это может быть причиной того, что ваше приложение не разрешает ваш запрос правильно. Снова проверьте «начало работы: базовое приложение», чтобы обеспечить правильную конфигурацию.

person p2sk    schedule 25.07.2014
comment
Спасибо за ответ. Теперь я вставляю запись в файл vhost. когда я открываю zf2-tutorial.localhost, не найдена веб-страница, появляется ошибка. - person Anshul Parashar; 25.07.2014

Вам нужна эта запись в hostfile. Добавление портов в этом файле невозможно.

127.0.0.1 zf2-tutorial.localhost

Веб-сайт теперь доступен по адресу zf2-tutorial.localhost:81 (а не 8081, вы указываете 81 в качестве номера порта в первой строке httpd-vhosts.conf)

person Thomas    schedule 25.07.2014
comment
Вы по-прежнему получаете сообщение Эта веб-страница недоступна или это изменение привело к другой ошибке? - person Thomas; 25.07.2014
comment
Можете ли вы сначала проверить, работает ли ваш сервер Apache? Что появляется при переходе на 127.0.0.1? - person Thomas; 25.07.2014
comment
Если он работает на порту 8081, почему вы используете порт 81 в httpd-vhosts.conf? Можете ли вы обновить httpd-vhosts.conf, чтобы он имел ‹VirtualHost *:8081› вместо ‹VirtualHost *:81› и перезагрузить сервер apache? - person Thomas; 25.07.2014
comment
я делаю обновление в vhosts.conf все еще не работает. Actullay порт 80 используется на tomcat сервере, поэтому я использовал 81 - person Anshul Parashar; 25.07.2014