-1

我是 zend 框架的新手,我正在尝试配置 zend。我在窗口 7XAMPP上成功安装了 zendskeleton 应用程序

安装后,我正在按照用户指南中的定义创建新模块专辑。我根据指南制作了所有代码和页面,但之后我可以打开专辑模块。我收到错误 404 未找到。

这里代码

  1. 应用程序.config

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

     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. 模块.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

4 回答 4

2

当你用你的 apache 文档根指向C:/xampp\htdocs/ZendSkeletonApplication/ZendSkeletonApplication-master/public

您需要在浏览器中使用此网址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条目。portwindows host

确保 apacheModRewrite已加载!

于 2014-07-25T11:08:05.787 回答
1

设置中的基本错误配置会导致此错误。

  1. 我不使用 Windows 很长时间,但您在路径中同时使用正斜杠和反斜杠。首先,您应该为 Windows 找到正确的目录分隔符并坚持下去。这似乎有问题:C:/xampp\htdocs/foo/bar/public
  2. 您正在定义一个虚拟主机,它侦听端口 (*:81) 上的任何 IP 地址,一个 system32 主机条目,它以别名81指向端口并尝试使用 port 调用 url 。出现这种错误很正常。8081zf2-tutorial.localhostzf2-tutorial.localhost/album80

完整阅读官方入门使用 Apache Web 服务器文档后,您将轻松找出解决方案。

于 2014-07-25T12:15:11.050 回答
0

您的网络服务器中似乎缺少一个虚拟主机条目。这可能是您的应用程序无法正确解决您的请求的原因。再次检查“入门:骨架应用程序”,以提供正确的配置。

于 2014-07-25T09:33:08.093 回答
0

您需要此主机文件条目。无法在此文件中添加端口。

127.0.0.1 zf2-tutorial.localhost

该网站现在在 zf2-tutorial.localhost:81 可用(而不是 8081,您在 httpd-vhosts.conf 的第一行中将 81 设置为端口号)

于 2014-07-25T11:40:38.327 回答