Страница не найдена по запросу URL в приложении Zend 2 Framework
Я новичок в Zend Framework, и я пытаюсь настроить Zend. Я был успешно установлен Zendskeleton на окнах 7 и XAMPP
После установки я создаю новый модуль Album согласно определению в руководстве пользователя. Я сделал весь код и страницы в соответствии с руководством, но после этого я смог открыть модуль Альбом. я получил ошибку 404 не найден.
здесь код
application.config
return array( 'modules' => array( 'Application','Album', ), 'module_paths' => array( './module', './vendor', ), 'config_glob_paths' => array( 'config/autoload/{,*.}{global,local}.php', ), ), );
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', ), ), );
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); }, ), ); } }
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>
запись хоста в 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
загружен!
Основные неверные конфигурации в вашей настройке вызывают эту ошибку.
- Я не использую окна в течение долгого времени, но вы используете как прямую, так и обратную косую черту в своих путях. Во-первых, вы должны найти правильный разделитель каталогов для Windows и придерживаться его. Это кажется проблематичным:
C:/xampp\htdocs/foo/bar/public
- Вы определяете виртуальный хост, который прослушивает любой 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: Скелетное приложение", чтобы обеспечить правильную конфигурацию.