【问题标题】:Deploy ZF2 site to shared host将 ZF2 站点部署到共享主机
【发布时间】:2013-03-06 14:53:29
【问题描述】:

当您将 Zend Framework 网站部署到共享主机时,通常无法将 DocumentRoot 更改为指向网站的 public/ 文件夹。因此,该网站的 URL 现在是 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 站点的正确方向?

【问题讨论】:

    标签: zend-framework2


    【解决方案1】:

    你在使用骨架应用吗?

    这似乎有点过头了,肯定比这简单得多。

    将所有内容从公共移动到根目录

    更改 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();
    

    简单。

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

    【讨论】:

    • 是的,我正在使用骨架应用程序。我有很多以这种方式托管的 ZF1 站点,所以我认为 ZF2 不会有问题。我想我对丢失公共目录有点不舒服,但我不能说为什么。
    • 如果您无法将 ZF 移出文档根目录,这是最简单的方法
    • 您是否无权访问上面的文件夹,通常即使使用共享主机,您也可以使用包含所有 Web 可查看文件的 public_html 或 htdocs 访问下面的级别..如果是这样,那就更好了您可以将所有 ZF 文件移到下一级
    • 我正在测试它。我让它在本地服务器上运行,并且我已将虚拟主机重新定向到文档根目录而不是 /public 以模拟托管环境。我已将公用文件夹中的所有内容移至根目录。该网站运行,但有些东西引发了我需要追踪的奇怪错误。我不确定它是否与新安排直接相关,但服务经理抱怨它无法获取或创建 baseurl 的实例。我正在尝试追踪它,但它似乎是一个 Ajax 调用,并且它更难识别
    • 可能是别的东西,如果您粘贴错误也许我可以提供帮助
    猜你喜欢
    • 2020-03-23
    • 2013-07-27
    • 2020-09-30
    • 1970-01-01
    • 2012-07-15
    • 2018-12-02
    • 1970-01-01
    • 2018-06-05
    • 1970-01-01
    相关资源
    最近更新 更多