Php 在Bluemix上部署Symfony2

Php 在Bluemix上部署Symfony2,php,symfony,ibm-cloud,buildpack,Php,Symfony,Ibm Cloud,Buildpack,我们正在尝试在bluemix上部署symfony2应用程序,但没有成功。。。我们已经看到了一些关于这类问题的帖子,但是它们要么没有答案,要么过时了,或者有一个稍微不同的问题 我们有一个基于symfony标准版发行版的symfony应用程序,它被移动到后端文件夹中,因为我们还有一个前端。 但是,composer.json位于根目录中,并引用后端文件夹。这是所做的唯一修改 在本地一切都可以正常工作,但在使用PHP buildpack的Bluemix上不行,下面是错误: Generating auto

我们正在尝试在bluemix上部署symfony2应用程序,但没有成功。。。我们已经看到了一些关于这类问题的帖子,但是它们要么没有答案,要么过时了,或者有一个稍微不同的问题

我们有一个基于symfony标准版发行版的symfony应用程序,它被移动到后端文件夹中,因为我们还有一个前端。 但是,composer.json位于根目录中,并引用后端文件夹。这是所做的唯一修改

在本地一切都可以正常工作,但在使用PHP buildpack的Bluemix上不行,下面是错误:

Generating autoload files

  [RuntimeException]                                                                                             
  Could not scan for classes inside "backend/app/AppKernel.php" which does not appear to be a file nor a folder  
在Bluemix上,通过manifest.yml将env设置为prod,我们已尝试在本地以相同配置安装composer:

 applications:
 - name: myapp
   random-route: true
   memory: 128M
   env:
    SYMFONY_ENV: prod
    #BP_DEBUG: true
这个错误是我在verbose模式下遇到的错误,在没有verbose模式的情况下我也遇到了同样的错误。我们在Bluemix上以无开发模式运行,下面是完整的options.json:

我尝试添加脚本以进行调试。它在本地运行良好,但在Bluemix上不起作用,因此根本没有帮助。从composer.json中提取:

该文件存在并位于正确的位置:

   $ ll backend/app/
    total 128
    drwxr-xr-x 6 bob bob  4096 févr. 28 15:45 .
    drwxr-xr-x 9 bob bob  4096 févr. 28 15:44 ..
    -rwxr-xr-x 1 bob bob   101 févr. 23 11:37 AppCache.php
    -rwxr-xr-x 1 bob bob  1394 févr. 24 11:32 AppKernel.php
    -rwxr-xr-x 1 bob bob   263 févr. 23 11:37 autoload.php
    -rw-r--r-- 1 bob bob 40956 févr. 28 15:45 bootstrap.php.cache
    drwxr-xr-x 3 bob bob  4096 févr. 28 15:45 cache
    -rwxr-xr-x 1 bob bob  3909 févr. 28 15:45 check.php
    drwxr-xr-x 2 bob bob  4096 févr. 28 14:37 config
    -rwxr-xr-x 1 bob bob   897 févr. 22 15:28 console
    -rwxr-xr-x 1 bob bob   143 févr. 23 11:37 .htaccess
    drwxr-xr-x 2 bob bob  4096 févr. 28 14:37 logs
    -rwxr-xr-x 1 bob bob  1358 févr. 23 11:37 phpunit.xml.dist
    drwxr-xr-x 3 bob bob  4096 févr. 23 11:37 Resources
    -rwxr-xr-x 1 bob bob 34272 févr. 28 15:45 SymfonyRequirements.php
在composer.json中,似乎配置是正确的(寻找正确的位置)。同一文件在本地使用,没有任何问题:

"extra": {
        "symfony-app-dir": "backend/app",
        "symfony-web-dir": "backend/web",
        ...
}
我想的最后一件事是,在进行新的cf推送之前,我做了一个cf delete myapp,只是为了确保在Bluemix上考虑到最新的文件(因为我不理解为什么在Bluemix上不运行预自动加载转储脚本)


谢谢你的帮助

我发现了这个问题

首先,我是这样发现的:

我向composer添加了no script和no autoloader选项,以确保容器将运行,并且我能够连接到它以查看文件系统。如果没有这些,容器就会被毁,无法知道发生了什么

"COMPOSER_INSTALL_OPTIONS_DEBUG": [ "--no-dev", "-vvv", "--no-autoloader", "--no-scripts"]
然后,我使用ssh(仅使用Diego)连接到容器:

然后,通过查看文件系统,我发现后端和前端文件夹都放在htdocs文件夹中

我已经将composer.json改为引用htdocs/backend/而不仅仅是backend/并且一切正常。来自composer.json文件的示例:

现在的问题是,我在本地环境(所有内容都在./)和容器(所有内容都在htdocs/)之间有不同的行为,而且composer.json不支持环境变量,这使得仅使用一个文件变得复杂。但那是另一个故事

"extra": {
        "symfony-app-dir": "backend/app",
        "symfony-web-dir": "backend/web",
        ...
}
"COMPOSER_INSTALL_OPTIONS_DEBUG": [ "--no-dev", "-vvv", "--no-autoloader", "--no-scripts"]
cf enable-ssh
cf ssh
    "autoload": {
        "psr-4": { "": "htdocs/backend/src/" },
        "classmap": [ "htdocs/backend/app/AppKernel.php", "htdocs/backend/app/AppCache.php" ]
    },