Я новичок в zend framework, и я пытаюсь настроить zend. Я был успешно установлен zendskeleton applicaion на окне 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
Как я могу справиться с этим. благодаря
когда вы указываете свой корень документа 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
загружен!
Основные неправильные конфигурации в вашей установке приводят к этой ошибке.
C:/xampp\htdocs/foo/bar/public
81
(*: 81), запись хостов system32, которая указывает на порт 8081
как псевдоним zf2-tutorial.localhost
и пытается вызвать zf2-tutorial.localhost/album
url, используя порт 80
. Получение такого рода ошибок довольно нормально. После полного ознакомления с официальными документами Getting Started and Using Apache Web Server вы легко сможете найти решение.
Кажется, вам не хватает записи vhost на вашем веб-сервере. Это может послужить причиной того, почему ваше приложение не разрешает ваше право на запрос. Еще раз проверьте «получение старта: скелетное приложение», чтобы обеспечить правильную конфигурацию.
Вам нужна эта запись в хост-файле. Добавление портов в этот файл невозможно.
127.0.0.1 zf2-tutorial.localhost
Веб-сайт теперь доступен в zf2-tutorial.localhost: 81 (а не 8081, вы установили 81 в качестве номера порта в первой строке httpd-vhosts.conf)