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

Я новичок в Zend Framework, и я пытаюсь настроить Zend. Я был успешно установлен Zendskeleton на окнах 7 и XAMPP

После установки я создаю новый модуль Album согласно определению в руководстве пользователя. Я сделал весь код и страницы в соответствии с руководством, но после этого я смог открыть модуль Альбом. я получил ошибку 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
    

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

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

4 ответа

Решение

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

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

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

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

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

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

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

Основные неверные конфигурации в вашей настройке вызывают эту ошибку.

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

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

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

127.0.0.1 zf2-tutorial.localhost

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

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

Другие вопросы по тегам