无法将 Symfony 应用程序部署到 Heroku


Cant Deploy Symfony app to Heroku

我一直试图将我的symfony2应用程序部署到Heroku,但一直遇到这些错误。我整个星期都在研究这个问题。有人请告诉我我做错了什么。我将包括一些重要文件。如果您需要我包含其他内容,请告诉我。谢谢!

特别是这4个错误:

[Doctrine''DBAL''Exception''ConnectionException]
驱动程序中发生异常:SQLSTATE[HY000] [2002] 没有这样的文件或 目录

[Doctrine''DBAL''Driver''PDOException] SQLSTATE[HY000] [2002] 没有这样的文件或目录

[PDOException]
SQLSTATE[HY000] [2002] 没有这样的文件或目录

脚本 Sensio''Bundle''DistributionBundle''Composer''ScriptHandler::installAssets 处理安装后 cmd 事件因异常而终止

这是我的作曲家.json文件:

{
"name": "symfony/framework-standard-edition",
"license": "MIT",
"type": "project",
"description": "The '"Symfony Standard Edition'" distribution",
"autoload": {
    "psr-0": { "": "src/", "SymfonyStandard": "app/" }
},
"require": {
    "php": ">=5.3.3",
    "symfony/symfony": "~2.5",
    "doctrine/orm": "~2.2,>=2.2.3",
    "doctrine/doctrine-bundle": "~1.2",
            "doctrine/doctrine-fixtures-bundle": "2.2.*",
            "doctrine/doctrine-migrations-bundle": "dev-master",
            "doctrine/migrations": "dev-master",
    "twig/extensions": "~1.0",
    "symfony/assetic-bundle": "~2.3",
    "symfony/swiftmailer-bundle": "~2.3",
    "symfony/monolog-bundle": "~2.4",
    "sensio/distribution-bundle": "~3.0",
    "sensio/framework-extra-bundle": "~3.0",
    "incenteev/composer-parameter-handler": "~2.0",
            "ircmaxell/password-compat": "~1.0.3",
    "friendsofsymfony/user-bundle": "~1.3"
},
"require-dev": {
    "sensio/generator-bundle": "~2.3",
            "phpunit/phpunit": "3.7.*"
},
"scripts": {
    "post-root-package-install": [
        "SymfonyStandard''Composer::hookRootPackageInstall"
    ],
    "post-install-cmd": [
        "Incenteev''ParameterHandler''ScriptHandler::buildParameters",
        "Sensio''Bundle''DistributionBundle''Composer''ScriptHandler::buildBootstrap",
        "Sensio''Bundle''DistributionBundle''Composer''ScriptHandler::clearCache",
        "Sensio''Bundle''DistributionBundle''Composer''ScriptHandler::installAssets",
        "Sensio''Bundle''DistributionBundle''Composer''ScriptHandler::installRequirementsFile",
        "Sensio''Bundle''DistributionBundle''Composer''ScriptHandler::removeSymfonyStandardFiles"
    ],
    "post-update-cmd": [
        "Incenteev''ParameterHandler''ScriptHandler::buildParameters",
        "Sensio''Bundle''DistributionBundle''Composer''ScriptHandler::buildBootstrap",
        "Sensio''Bundle''DistributionBundle''Composer''ScriptHandler::clearCache",
        "Sensio''Bundle''DistributionBundle''Composer''ScriptHandler::installAssets",
        "Sensio''Bundle''DistributionBundle''Composer''ScriptHandler::installRequirementsFile",
        "Sensio''Bundle''DistributionBundle''Composer''ScriptHandler::removeSymfonyStandardFiles"
    ]
},
"config": {
    "bin-dir": "bin"
},
"extra": {
    "symfony-app-dir": "app",
    "symfony-web-dir": "web",
    "incenteev-parameters": {
        "file": "app/config/parameters.yml"
    },
    "branch-alias": {
        "dev-master": "2.5-dev"
    }
}
}

这是我的应用程序内核.php文件

<?php
use Symfony'Component'HttpKernel'Kernel;
use Symfony'Component'Config'Loader'LoaderInterface;
class AppKernel extends Kernel
{
public function __construct($environment, $debug){
date_default_timezone_set( 'America/Chicago' );
parent::__construct($environment, $debug);
}
public function registerBundles()
{
    $bundles = array(
        new Symfony'Bundle'FrameworkBundle'FrameworkBundle(),
        new Symfony'Bundle'SecurityBundle'SecurityBundle(),
        new Symfony'Bundle'TwigBundle'TwigBundle(),
        new Symfony'Bundle'MonologBundle'MonologBundle(),
        new Symfony'Bundle'SwiftmailerBundle'SwiftmailerBundle(),
        new Symfony'Bundle'AsseticBundle'AsseticBundle(),
        new Doctrine'Bundle'DoctrineBundle'DoctrineBundle(),
                    new Doctrine'Bundle'FixturesBundle'DoctrineFixturesBundle(),
                    new Doctrine'Bundle'MigrationsBundle'DoctrineMigrationsBundle(),
        new Sensio'Bundle'FrameworkExtraBundle'SensioFrameworkExtraBundle(),
        new Foodoo'Bundle'FoodooBundle'FoodooFoodooBundle(),
        new Blogger'BlogBundle'BloggerBlogBundle(),
                    new FOS'UserBundle'FOSUserBundle(),
                    new Blogger'UserBundle'BloggerUserBundle(),
    );
    if (in_array($this->getEnvironment(), array('dev', 'test'))) {
        $bundles[] = new Acme'DemoBundle'AcmeDemoBundle();
        $bundles[] = new Symfony'Bundle'WebProfilerBundle'WebProfilerBundle();
        $bundles[] = new Sensio'Bundle'DistributionBundle'SensioDistributionBundle();
        $bundles[] = new Sensio'Bundle'GeneratorBundle'SensioGeneratorBundle();
    }
    return $bundles;
}
public function registerContainerConfiguration(LoaderInterface $loader)
{
    $loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml');
}
}

这是我的 config.yml 文件:

imports:
- { resource: parameters.yml }
- { resource: security.yml }
- { resource: @BloggerBlogBundle/Resources/config/config.yml }
framework:
#esi:             ~
translator:      { fallback: "%locale%" }
secret:          "%secret%"
router:
    resource: "%kernel.root_dir%/config/routing.yml"
    strict_requirements: ~
form:            ~
csrf_protection: ~
validation:      { enable_annotations: true }
templating:
    engines: ['twig']
    #assets_version: SomeVersionScheme
default_locale:  "%locale%"
trusted_hosts:   ~
trusted_proxies: ~
session:
    # handler_id set to null will use default session handler from php.ini
    handler_id:  ~
fragments:       ~
http_method_override: true
# Twig Configuration
twig:
debug:            "%kernel.debug%"
strict_variables: "%kernel.debug%"
# Assetic Configuration
assetic:
debug:          "%kernel.debug%"
use_controller: false
bundles:        [BloggerBlogBundle]
#java: /usr/bin/java
filters:
    cssrewrite: ~
    #closure:
    #    jar: "%kernel.root_dir%/Resources/java/compiler.jar"
    #yui_css:
    #    jar: "%kernel.root_dir%/Resources/java/yuicompressor-2.4.7.jar"
# Doctrine Configuration
doctrine:
dbal:
    driver:   "%database_driver%"
    host:     "%database_host%"
    port:     "%database_port%"
    dbname:   "%database_name%"
    user:     "%database_user%"
    password: "%database_password%"
    charset:  UTF8
    # if using pdo_sqlite as your database driver:
    #   1. add the path in parameters.yml
    #     e.g. database_path: "%kernel.root_dir%/data/data.db3"
    #   2. Uncomment database_path in parameters.yml.dist
    #   3. Uncomment next line:
    #     path:     "%database_path%"
orm:
    auto_generate_proxy_classes: "%kernel.debug%"
    auto_mapping: true
# Swiftmailer Configuration
swiftmailer:
transport: "%mailer_transport%"
host:      "%mailer_host%"
username:  "%mailer_user%"
password:  "%mailer_password%"
encryption: ssl
# spool:     { type: memory }
# configuration for fos user bundle
fos_user:
db_driver: orm # other valid values are 'mongodb', 'couchdb' and 'propel'
firewall_name: demo_fos_login
user_class: Blogger'UserBundle'Entity'User

这是来自heroku的错误日志:

-----> PHP app detected
-----> Resolved composer.lock requirement for PHP to version 5.6.4.
-----> Installing system packages...
   - PHP 5.6.4
   - Apache 2.4.10
   - Nginx 1.6.0
-----> Installing PHP extensions...
   - zend-opcache (automatic; bundled)
-----> Installing dependencies...
   Composer version 1.0.0-alpha9 2014-12-07 17:15:20
   Loading composer repositories with package information
   Installing dependencies from lock file
     - Installing doctrine/lexer (v1.0)
       Downloading: connection...    Downloading: 0%               Downloading: 80%      Downloading: 100%
     - Installing doctrine/annotations (v1.2.3)
       Downloading: connection...    Downloading: 0%               Downloading: 10%    Downloading: 20%    Downloading: 30%    Downloading: 40%    Downloading: 50%    Downloading: 60%    Downloading: 70%    Downloading: 80%    Downloading: 90%    Downloading: 100%
     - Installing twig/twig (v1.16.3)
       Downloading: connection...    Downloading: 0%               Downloading: 5%    Downloading: 10%    Downloading: 15%    Downloading: 20%    Downloading: 25%    Downloading: 30%    Downloading: 35%    Downloading: 40%    Downloading: 45%    Downloading: 50%    Downloading: 55%    Downloading: 60%    Downloading: 65%    Downloading: 70%    Downloading: 75%    Downloading: 80%    Downloading: 85%    Downloading: 90%    Downloading: 95%    Downloading: 100%    Downloading: 100%
     - Installing psr/log (1.0.0)
       Downloading: connection...    Downloading: 0%               Downloading: 15%    Downloading: 30%    Downloading: 45%    Downloading: 60%    Downloading: 75%    Downloading: 100%
     - Installing doctrine/inflector (v1.0.1)
       Downloading: connection...    Downloading: 0%               Downloading: 60%    Downloading: 100%
     - Installing doctrine/collections (v1.2)
       Downloading: connection...    Downloading: 0%               Downloading: 35%    Downloading: 70%    Downloading: 100%
     - Installing doctrine/cache (v1.3.1)
       Downloading: connection...    Downloading: 0%               Downloading: 20%    Downloading: 25%    Downloading: 40%    Downloading: 45%    Downloading: 65%    Downloading: 85%    Downloading: 100%
     - Installing doctrine/common (v2.4.2)
       Downloading: connection...    Downloading: 0%               Downloading: 5%    Downloading: 10%    Downloading: 15%    Downloading: 20%    Downloading: 25%    Downloading: 30%    Downloading: 35%    Downloading: 40%    Downloading: 45%    Downloading: 50%    Downloading: 55%    Downloading: 60%    Downloading: 65%    Downloading: 70%    Downloading: 75%    Downloading: 80%    Downloading: 85%    Downloading: 90%    Downloading: 95%    Downloading: 100%
     - Installing symfony/symfony (v2.6.1)
       Downloading: connection...    Downloading: 0%               Downloading: 5%    Downloading: 10%    Downloading: 15%    Downloading: 20%    Downloading: 25%    Downloading: 30%    Downloading: 35%    Downloading: 40%    Downloading: 45%    Downloading: 50%    Downloading: 55%    Downloading: 60%    Downloading: 65%    Downloading: 70%    Downloading: 75%    Downloading: 80%    Downloading: 85%    Downloading: 90%    Downloading: 95%    Downloading: 100%    Downloading: 100%
     - Installing doctrine/doctrine-cache-bundle (v1.0.1)
       Downloading: connection...    Failed to download doctrine/doctrine-cache-bundle from dist: Could not authenticate against github.com
       Now trying to download from source
     - Installing doctrine/doctrine-cache-bundle (v1.0.1)
       Cloning e4b6f810aa047f9cbfe41c3d6a3d7e83d7477a9d
     - Installing jdorn/sql-formatter (v1.2.17)
       Downloading: connection...    Failed to download jdorn/sql-formatter from dist: Could not authenticate against github.com
       Now trying to download from source
     - Installing jdorn/sql-formatter (v1.2.17)
       Cloning 64990d96e0959dff8e059dfcdc1af130728d92bc
     - Installing doctrine/dbal (v2.5.0)
       Downloading: connection...    Failed to download doctrine/dbal from dist: Could not authenticate against github.com
       Now trying to download from source
     - Installing doctrine/dbal (v2.5.0)
       Cloning 71140662c0a954602e81271667b6e03d9f53ea34
       Skipped installation of bin bin/doctrine-dbal for package doctrine/dbal: name conflicts with an existing file
     - Installing doctrine/doctrine-bundle (v1.3.0)
       Downloading: connection...    Failed to download doctrine/doctrine-bundle from dist: Could not authenticate against github.com
       Now trying to download from source
     - Installing doctrine/doctrine-bundle (v1.3.0)
       Cloning 3beb3a780485ab01f86941f4892cd23ef8c39c6b
     - Installing doctrine/data-fixtures (v1.0.0)
       Downloading: connection...    Failed to download doctrine/data-fixtures from dist: Could not authenticate against github.com
       Now trying to download from source
     - Installing doctrine/data-fixtures (v1.0.0)
       Cloning b4a135c7db56ecc4602b54a2184368f440cac33e
     - Installing doctrine/doctrine-fixtures-bundle (v2.2.0)
       Downloading: connection...    Failed to download doctrine/doctrine-fixtures-bundle from dist: Could not authenticate against github.com
       Now trying to download from source
     - Installing doctrine/doctrine-fixtures-bundle (v2.2.0)
       Cloning c811f96f0cf83b997e3a3ed037cac729bbe3e803
     - Installing doctrine/migrations (dev-master 96f838b)
       Downloading: connection...    Failed to download doctrine/migrations from dist: Could not authenticate against github.com
       Now trying to download from source
     - Installing doctrine/migrations (dev-master 96f838b)
       Cloning 96f838b4fa93693d19196c8e24ed5f1c3972ba87
     - Installing doctrine/doctrine-migrations-bundle (dev-master 81575a4)
       Downloading: connection...    Failed to download doctrine/doctrine-migrations-bundle from dist: Could not authenticate against github.com
       Now trying to download from source
     - Installing doctrine/doctrine-migrations-bundle (dev-master 81575a4)
       Cloning 81575a4316951125ce408c70f30547c77d98f78a
     - Installing doctrine/orm (v2.4.7)
       Downloading: connection...    Failed to download doctrine/orm from dist: Could not authenticate against github.com
       Now trying to download from source
     - Installing doctrine/orm (v2.4.7)
       Cloning 2bc4ff3cab2ae297bcd05f2e619d42e6a7ca9e68
       Skipped installation of bin bin/doctrine for package doctrine/orm: name conflicts with an existing file
       Skipped installation of bin bin/doctrine.php for package doctrine/orm: name conflicts with an existing file
     - Installing friendsofsymfony/user-bundle (v1.3.5)
       Downloading: connection...    Failed to download friendsofsymfony/user-bundle from dist: Could not authenticate against github.com
       Now trying to download from source
     - Installing friendsofsymfony/user-bundle (v1.3.5)
       Cloning d66890ad3489e18be153502c5ccc3f2bf5cce442
     - Installing incenteev/composer-parameter-handler (v2.1.0)
       Downloading: connection...    Failed to download incenteev/composer-parameter-handler from dist: Could not authenticate against github.com
       Now trying to download from source
     - Installing incenteev/composer-parameter-handler (v2.1.0)
       Cloning 143272a0a09c62616a3c8011fc165a10c6b35241
     - Installing ircmaxell/password-compat (v1.0.4)
       Downloading: connection...    Failed to download ircmaxell/password-compat from dist: Could not authenticate against github.com
       Now trying to download from source
     - Installing ircmaxell/password-compat (v1.0.4)
       Cloning 5c5cde8822a69545767f7c7f3058cb15ff84614c
     - Installing sensiolabs/security-checker (v2.0.0)
       Downloading: connection...    Failed to download sensiolabs/security-checker from dist: Could not authenticate against github.com
       Now trying to download from source
     - Installing sensiolabs/security-checker (v2.0.0)
       Cloning 5b4eb4743ebe68276c911c84101ecdf4a9ae76ee
       Skipped installation of bin security-checker for package sensiolabs/security-checker: name conflicts with an existing file
     - Installing sensio/distribution-bundle (v3.0.14)
       Downloading: connection...    Failed to download sensio/distribution-bundle from dist: Could not authenticate against github.com
       Now trying to download from source
     - Installing sensio/distribution-bundle (v3.0.14)
       Cloning dc20d5ab3251587b047859ca2fc06c1b88a38d00
     - Installing sensio/framework-extra-bundle (v3.0.4)
       Downloading: connection...    Failed to download sensio/framework-extra-bundle from dist: Could not authenticate against github.com
       Now trying to download from source
     - Installing sensio/framework-extra-bundle (v3.0.4)
       Cloning b3bc3e67c8b6b68b18d727012183520d35ee762a
     - Installing kriswallsmith/assetic (v1.2.1)
       Downloading: connection...    Failed to download kriswallsmith/assetic from dist: Could not authenticate against github.com
       Now trying to download from source
     - Installing kriswallsmith/assetic (v1.2.1)
       Cloning b20efe38845d20458702f97f3ff625d80805897b
     - Installing symfony/assetic-bundle (v2.5.0)
       Downloading: connection...    Failed to download symfony/assetic-bundle from dist: Could not authenticate against github.com
       Now trying to download from source
     - Installing symfony/assetic-bundle (v2.5.0)
       Cloning 90ea7fb66d6d5245fd4afc16e4c8070214254fec
     - Installing monolog/monolog (1.12.0)
       Downloading: connection...    Failed to download monolog/monolog from dist: Could not authenticate against github.com
       Now trying to download from source
     - Installing monolog/monolog (1.12.0)
       Cloning 1fbe8c2641f2b163addf49cc5e18f144bec6b19f
     - Installing symfony/monolog-bundle (v2.7.0)
       Downloading: connection...    Failed to download symfony/monolog-bundle from dist: Could not authenticate against github.com
       Now trying to download from source
     - Installing symfony/monolog-bundle (v2.7.0)
       Cloning e8f71c91a3784f3fa1a75fb1f7f4d4826c5f2773
     - Installing swiftmailer/swiftmailer (v5.3.1)
       Downloading: connection...    Failed to download swiftmailer/swiftmailer from dist: Could not authenticate against github.com
       Now trying to download from source
     - Installing swiftmailer/swiftmailer (v5.3.1)
       Cloning c5f963e7f9d6f6438fda4f22d5cc2db296ec621a
     - Installing symfony/swiftmailer-bundle (v2.3.8)
       Downloading: connection...    Failed to download symfony/swiftmailer-bundle from dist: Could not authenticate against github.com
       Now trying to download from source
     - Installing symfony/swiftmailer-bundle (v2.3.8)
       Cloning 970b13d01871207e81d17b17ddda025e7e21e797
     - Installing twig/extensions (v1.2.0)
       Downloading: connection...    Failed to download twig/extensions from dist: Could not authenticate against github.com
       Now trying to download from source
     - Installing twig/extensions (v1.2.0)
       Cloning 8cf4b9fe04077bd54fc73f4fde83347040c3b8cd
   Generating optimized autoload files
   Updating the "app/config/parameters.yml" file
   Clearing the cache for the prod environment with debug false

     [Doctrine'DBAL'Exception'ConnectionException]                                     
     An exception occured in driver: SQLSTATE[HY000] [2002] No such file or directory  



     [Doctrine'DBAL'Driver'PDOException]               
     SQLSTATE[HY000] [2002] No such file or directory  



     [PDOException]                                    
     SQLSTATE[HY000] [2002] No such file or directory  
Script Sensio'Bundle'DistributionBundle'Composer'ScriptHandler::installAssets   
handling  the post-install-cmd event terminated with an exception       
[RuntimeException]                                                            
An error occurred when executing the "'assets:install ''''web'''''" command.  
!     Push rejected, failed to compile PHP app

似乎您没有将 cleardb 插件添加到您的 heroku 实例中

 heroku addons:add cleardb:ignite

这是我为解决此问题所做的:

我的config_prod.yml文件导入了我的config.yml文件,该文件导入了parameters.yml文件,其中包括我的本地服务器的数据库配置信息。

当您将其上传到实时服务器(heroku 或任何其他服务器)时,您需要为新数据库配置该parameters.yml文件。

选项 1(轻松修复):您可以在 parameters.yml 文件中更改数据库配置以匹配 heroku 的cleardb:ignite数据库。但是,除非您将数据库配置信息更改回来,否则它将无法在本地服务器上工作。

选项 2:您可以创建另一个parameters.yml文件并为其命名。即production_parmaeters.yml,并将该文件导入config_prod.yml文件中。并确保您的 C onfig_dev.yml 文件包含您的原始 parameters.yml 文件,其中包含您的本地开发数据库配置。

然后删除

- { resource: parameters.yml } 

在您的主config.yml文件中。

谢谢大家的帮助!

如果你只是在谷歌上搜索"SQLSTATE[HY000] [2002] 没有这样的文件或目录"消息,你很快就会找到一个解释:通过Unix域套接字连接到MySQL失败,因为该套接字,例如 /var/sock/mysql.sock 不存在(如果您尝试连接到localhost,MySQL 会这样做,而如果您连接到127.0.0.1,它会使用 TCP/IP 套接字)。

那么您的问题很可能是您在某处为prod环境设置了数据库凭据,但这些凭据无效,因为它们尝试连接到localhost MySQL。