Zend framework2 将ZF2站点部署到共享主机

Zend framework2 将ZF2站点部署到共享主机,zend-framework2,Zend Framework2,将Zend Framework网站部署到共享主机时,通常无法将DocumentRoot更改为指向网站的公用/文件夹。因此,该网站的URL现在为。这看起来不太专业,所以我想把它去掉。到目前为止,我已经使用了ZF1,Rob Allen在他的博客上提供了一种方法。我已尝试为ZF2修改此选项。他建议在根目录中放置一个index.php文件,其行为: 包括“public/index.php” 完成此操作后,打开索引页OK,但CSS链接已断开。Rob添加了一个控制器插件,将baseUrl重置为/public

将Zend Framework网站部署到共享主机时,通常无法将DocumentRoot更改为指向网站的公用/文件夹。因此,该网站的URL现在为。这看起来不太专业,所以我想把它去掉。到目前为止,我已经使用了ZF1,Rob Allen在他的博客上提供了一种方法。我已尝试为ZF2修改此选项。他建议在根目录中放置一个index.php文件,其行为:

包括“public/index.php”

完成此操作后,打开索引页OK,但CSS链接已断开。Rob添加了一个控制器插件,将baseUrl重置为/public,以处理面向公众的CSS和图像文件等。为此,我在ZF2中找到了Matthew Weier O’Phinney的一个项目,他在其中介绍了如何设置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']);
    }
}
基本url键在modules/Application/configs/module.config.php中设置:

'base\u url'=>'/public'

我能够转储router对象,并确认在这个阶段基本url设置正确。不幸的是,现在不再打开索引页,并给出404路由错误


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

您是否在使用skeleton应用程序

这似乎有点过头了,当然要简单得多

将所有内容从公共移到根

change 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();

您正在使用skeleton应用程序吗

这似乎有点过头了,当然要简单得多

将所有内容从公共移到根

change 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();

是的,我正在使用skeleton应用程序。我有很多ZF1站点是以这种方式托管的,所以我认为这不会是ZF2的问题。我想我对丢失公共目录有点不舒服,但我真的说不出原因。如果你不能将ZF移出文档根目录,这是最简单的方法。你没有访问上面文件夹的权限吗?通常即使使用共享主机,你也可以访问下面的级别,使用Public_html,或者包含所有web可视文件的htdocs。如果是这样,那么更好的是,您可以将所有ZF文件移动到低于我们所说的测试级别。我让它在本地服务器上运行,并将虚拟主机重新定向到文档根而不是/public,以模拟托管环境。我已将公用文件夹中的所有内容移动到根目录中。该网站运行,但有东西抛出了一个奇怪的错误,我需要跟踪。我不确定它是否与新安排直接相关,但服务经理抱怨它无法获取或创建baseurl的实例。我正试图找到它,但它似乎是一个Ajax调用,这使得识别它可能是其他东西变得更加困难,如果你粘贴错误,也许我可以帮助是的,我正在使用skeleton应用程序。我有很多ZF1站点是以这种方式托管的,所以我认为这不会是ZF2的问题。我想我对丢失公共目录有点不舒服,但我真的说不出原因。如果你不能将ZF移出文档根目录,这是最简单的方法。你没有访问上面文件夹的权限吗?通常即使使用共享主机,你也可以访问下面的级别,使用Public_html,或者包含所有web可视文件的htdocs。如果是这样,那么更好的是,您可以将所有ZF文件移动到低于我们所说的测试级别。我让它在本地服务器上运行,并将虚拟主机重新定向到文档根而不是/public,以模拟托管环境。我已将公用文件夹中的所有内容移动到根目录中。该网站运行,但有东西抛出了一个奇怪的错误,我需要跟踪。我不确定它是否与新安排直接相关,但服务经理抱怨它无法获取或创建baseurl的实例。我正试图找到它,但它似乎是一个Ajax调用,这使得识别它可能是其他东西变得更加困难,如果你粘贴错误,也许我可以帮助你