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