【问题标题】:Deployment of Symfony 3.2 project to Strato将 Symfony 3.2 项目部署到 Strato
【发布时间】:2017-04-21 15:38:03
【问题描述】:

我开发了一个 Symfony 项目(版本 3.2),其中包含数据库(mysql)中的一些数据。开发是使用本地机器和 XAMPP 完成的。到目前为止一切正常。

现在是棘手的部分:部署。我阅读了所有文档。有两种选择:

  • 通过在服务器上的 prod 中运行 composer 脚本来上传相关源、迁移数据库和配置项目
  • 在 prod 环境中通过 composer 配置,上传,迁移数据库。

(唯一的区别是运行脚本的位置。)

问题:Strato 两个选项都不起作用:

对于选项 1:我无法在服务器上运行脚本,即使使用“set SYMFONY_ENV=prod”(导出命令不存在)在“ php composer.phar 安装 --no-dev --optimize-autoloader"。

错误:

PHP 致命错误:找不到类 'Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle'

对于选项 2:Stratos rdbms.strato.de 数据库服务器无法从其他机器访问。

错误:

连接测试失败。脚本没有完成。

我已经在这里搜索过,但我找不到任何东西。有谁知道解决办法吗?

【问题讨论】:

  • 如果您认为自己回答了这个问题。在共享主机上运行 symfony 网站不是一个好主意。
  • 没错,我已经后悔了。但更重要的是找到一些解决方法。

标签: php mysql symfony


【解决方案1】:

您确定不能执行export 命令吗? 这是一些共享主机限制还是...?

如果您真的无法使用该命令,在我看来,一种解决方法可能是从 AppKernel.php(在 Strato 上的应用中)删除不属于生产环境的包

这部分代码如下所示:

// AppKernel.php
if (in_array($this->getEnvironment(), ['dev'], true)) {
        $bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle();
        $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
        $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
        $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();

    }

此外,您需要从config_dev.yml 中删除所有内容,除了:

imports:
    - { resource: config.yml }

您可以在此处阅读有关 composer 和 symfony 环境差异的更多信息: How does composer know symfony environment 另外,一年前我写了一篇关于在共享主机上部署 Symfony 的文章,也许它可以在将来帮助你:)) http://matkodjipalo.com/index.php/2016/05/19/installing-symfony-on-hostgator-shared-hosting/

【讨论】:

  • 感谢您的评论!我尽我所能。我决定切换到 Strato V 服务器,现在它可以工作了。
猜你喜欢
  • 2016-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-01
相关资源
最近更新 更多