将ZF2站点部署到共享主机

时间:2013-03-06 14:53:29

标签: zend-framework2

将Zend Framework网站部署到共享主机时,通常无法将DocumentRoot更改为指向网站的公共/文件夹。因此,网站的网址现在为http://www.example.com/public/。这看起来不太专业,所以我想删除它。到目前为止,我已经使用过ZF1,Rob Allen在他的博客http://akrabat.com/zend-framework/zend-framework-on-a-shared-host/上提供了一种方法。我试图为ZF2修改它。他建议在一个根目录中放置一个index.php文件:

include 'public/index.php';

执行此操作后,http://www.example.com打开索引页面,但CSS链接已断开。 Rob添加了一个控制器插件,将baseUrl重置为/ public以处理面向公众的CSS和图像文件等。为了在ZF2中执行此操作,我在Matthew Weier O'Phinney http://zend-framework-community.634137.n4.nabble.com/Setting-the-base-url-in-ZF2-MVC-td3946284.html中找到了一个项目,他描述了如何设置的baseUrl。基于他的代码,我将其添加到modules / Application / Module.php

class Module {
    public function onBootstrap(MvcEvent $e) {
        $config          = $e->getApplication()->getServiceManager()->get('config');
        $router          = $e->getApplication()->getServiceManager()->get('router');        
        $router->setBaseUrl($config['base_url']);
    }
}

base_url键在modules / Application / configs / module.config.php中设置:

'base_url' => '/public'

我能够转储路由器对象并确认在此阶段正确设置了base_url。不幸的是,现在http://www.example.com不再打开索引页面并发出404路由错误。

是否有人能够告诉我我做错了什么或指出我在共享托管环境中运行ZF2网站的正确方向?

1 个答案:

答案 0 :(得分:5)

您使用的是骨架应用吗?

看起来有点过头了,肯定比这简单得多。

将所有内容从公开移动到根

更改index.php

<?php
/**
 * This makes our life easier when dealing with paths. Everything is relative
 * to the application root now.
 */
//chdir(dirname(__DIR__));
chdir(__DIR__);

// Setup autoloading
require 'init_autoloader.php';

// Run the application!
Zend\Mvc\Application::init(require 'config/application.config.php')->run();

Simples。

如果您正在运行这样的应用程序,您可能希望阻止使用htaccess等直接访问某些Zend Framework文件夹

相关问题