【问题标题】:Configuring zf2, doctrine 2 on Microsoft Azure websites在 Microsoft Azure 网站上配置 zf2、教义 2
【发布时间】:2013-08-06 14:37:15
【问题描述】:

我正在尝试在 azure 网站上配置 Zend 2 + 学说 2。我们无法访问 Windows azure 网站上的命令行,因此我们无法执行 php composer.phar 更新来修复学说模块,以便 zend 可以加载它们。我收到以下错误消息

Zend\ServiceManager\ServiceManager::get 无法获取或创建doctrine.entitymanager.orm_default 的实例

在我的本地机器上,我已将 application.config.php 文件中的模块加载为

'modules' => array(
    'Rest',
'Front',
'DoctrineModule',
    'DoctrineORMModule'
),

但在 azure 上,它无法加载 DoctrineModule 和 DoctrineORMModule。

然后我决定删除学说模块以像这样加载。我正在尝试将它们加载为

public function getAutoloaderConfig()
{
    return array(
        'Zend\Loader\StandardAutoloader' => array(
            'namespaces' => array(
                __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
        'Doctrine\Common'   => __DIR__ . '/../../library/vendor/doctrine/common',
        'Doctrine\DBAL'     => __DIR__ . '/../../library/vendor/doctrine/dbal',
        'Symfony\Console'   => __DIR__ . '/../../library/vendor/symfony/console',
        'DoctrineModule'    => __DIR__ . '/../../library/vendor/doctrine/doctrine-module',
        'DoctrineORMModule' => __DIR__ . '/../../library/vendor/doctrine/doctrine-orm-module',
            ),
        ),
    );
}

在 Module.php 中,但现在它无法使用 ServiceManager 获取教义.entitymanager.orm_default(如上所示)。我应该怎么办 ?我应该如何在 zend 应用程序中手动加载学说模块的所有内容。请提出建议。

【问题讨论】:

  • 如果由于某种原因你没有使用 Doctrine 命令,那么你将不得不手动生成你需要的代码的 Respected 部分。例如,这些命令可以帮助您生成数据库架构等。但是对于您的情况,您必须在某个模块 public function getServiceConfig() {return array( 'factories' => array( 'EntityManager' = > function($SM) { $EM = $SM->get('doctrine.entitymanager.orm_default'); return $EM;},),);}
  • 暂时尝试将代码部分放在属于应用程序模块的 Module.php 文件中

标签: azure web doctrine-orm zend-framework2


【解决方案1】:

您确实可以访问 Windows Azure 网站中的命令行。有几种方法可以访问它:

  1. 在本地机器上使用KuduExec (npm install kuduexec -g)
  2. 通过 Web 浏览器使用 KuduExec (https://mywebsite.scm.azurewebsites.net)
  3. Kudu 中使用deployment hook 自定义部署

使用其中一种方法,您可以使用 curl 下载 composer.phar,并在您的项目上运行 composer update 以在您的网站上安装依赖项。

【讨论】:

  • 我找到了另一种方法。我们可以在文件 .deployment 中定义部署后脚本,并将其放在项目的根文件夹中。 Azure 在部署后执行该脚本,我们可以更新学说和 zend。它对我来说非常有效。
猜你喜欢
  • 1970-01-01
  • 2014-10-14
  • 1970-01-01
  • 2012-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-26
  • 1970-01-01
相关资源
最近更新 更多