我是zend框架的新手,我正在尝试配置zend。我在窗口7 和 XAMPP
上成功安装了zendskeleton应用程序安装完成后,我根据用户指南中的定义创建新模块相册。我根据指南制作了所有代码和页面,但之后我可以打开相册模块。我找不到错误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
我该怎样处理它。 感谢
答案 0 :(得分:2)
当您将apache文档根目录指向C:/xampp\htdocs/ZendSkeletonApplication/ZendSkeletonApplication-master/public
您需要在浏览器中使用此网址http://zf2-tutorial.localhost:8081/album
而不是你写的http://zf2-tutorial.localhost/ZendSkeletonApplication/ZendSkeletonApplication-master/public/album
此网址指向不同模块/位置的内部。
//修改
如果这不起作用,请检查您的zf2 /public
文件夹是否存在.htaccess
文件,否则请使用zend skeleton应用程序中的文件https://github.com/zendframework/ZendSkeletonApplication/blob/master/public/.htaccess
如果apache vhost
等于您的port
文件端口,请检查您的windows host
条目。
确保已加载apache ModRewrite
!
答案 1 :(得分:1)
您的设置中的基本配置错误会导致此错误。
C:/xampp\htdocs/foo/bar/public
81
上的任何IP地址(*:81),一个system32主机条目,指向端口8081
为zf2-tutorial.localhost
别名,尝试使用端口zf2-tutorial.localhost/album
来呼叫80
网址。得到这种错误非常正常。在完整阅读官方Getting Started和Using Apache Web Server文档后,您可以轻松找到解决方案。
答案 2 :(得分:0)
您的网络服务器中似乎缺少vhost条目。这可能是您的申请无法正确解决您的请求的原因。检查&#34;获取startet:骨架应用程序&#34;再次,提供适当的配置。
答案 3 :(得分:0)
您需要此主机文件条目。此文件中无法添加端口。
127.0.0.1 zf2-tutorial.localhost
该网站现在可在zf2-tutorial.localhost:81获得(而不是8081,您将81设置为httpd-vhosts.conf第一行的端口号)