2017-02-28 100 views
1

我們正試圖在bluemix上部署symfony2應用程序,但沒有成功......我們已經看到關於這類問題的幾篇文章,但它們要麼沒有答案,要麼廢棄,要麼略有不同問題。在Bluemix上部署Symfony2

我們有一個基於symfony標準版發行版的symfony應用程序,因爲我們也有一個前端文件夾,所以它移到了後端文件夾中。 但是,composer.json位於根目錄中,並引用了後端文件夾。這是唯一的修改。

一切正常本地,而不是在Bluemix與PHP buildpack,這裏是錯誤:

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的ENV設置通過manifest.yml催促,我們已經嘗試作曲家安裝在本地相同的配置:

applications: 
- name: myapp 
    random-route: true 
    memory: 128M 
    env: 
    SYMFONY_ENV: prod 
    #BP_DEBUG: true 

此錯誤是一個我用詳細模式下得到的,我有完全沒有詳細模式相同。我們在Bluemix沒有-dev的模式運行,這裏是全options.json

{ 
    "COMPOSER_INSTALL_OPTIONS": [ "--no-dev", "-vvv"] 
} 

我試圖進行調試目的添加腳本。它在本地運行良好,但不在Bluemix上運行,所以完全沒有幫助。

"scripts": { 
    "pre-autoload-dump": [ 
     "echo TEST" 
    ], 
    ... 
} 

該文件存在並且是在正確的地方:從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推只是要確定最新的文件採取之前刪除的myapp考慮到Bluemix(因爲我不明白爲什麼pre-autoload-dump腳本不能在Bluemix上運行)

感謝您的幫助!

回答

1

我發現了這個問題。

首先,我發現它這樣做的:

我已經加入了無腳本並沒有自動加載選項作曲家,以確保容器運行和我能夠連接到它看文件系統。沒有這個,容器就會被銷燬,無法知道發生了什麼。

"COMPOSER_INSTALL_OPTIONS_DEBUG": [ "--no-dev", "-vvv", "--no-autoloader", "--no-scripts"] 

然後我已連接到使用ssh(僅迭戈)容器:

cf enable-ssh 
cf ssh 

然後,通過查看文件系統,我發現了後端前端文件夾都放在htdocs文件夾中。

我已經改變了我composer.json引用的htdocs /後端/,而不是僅僅後端/,一切工作正常。從composer.json文件示例:

"autoload": { 
     "psr-4": { "": "htdocs/backend/src/" }, 
     "classmap": [ "htdocs/backend/app/AppKernel.php", "htdocs/backend/app/AppCache.php" ] 
    }, 

現在的問題是,我對當地環境之間的不同的行爲(一切都在./)和容器(一切都在的htdocs/)以及不支持環境變量的composer.json使得僅使用一個文件變得複雜。但這是另一回事。