php - 使用 IBM Bluemix 进行 Laravel 数据库迁移

标签 php mysql laravel-4 ibm-cloud

我正在尝试使用 IBM Bluemix 将我的应用程序放到生产服务器上。实际上,我在免费层,只是在测试 Bluemix。我的应用程序是基于 Laravel 4.2 构建的。

我已经创建了一个 CLEARDB MYSQL 数据库并且我像这样编辑了我的 database.php

首先我在顶部添加了以下几行

<?php

$services = json_decode(getenv('VCAP_SERVICES'), true);
$sqlCreds = $services['cleardb'][0]['credentials'];

return array(...

然后我调整了MYSQL配置

'mysql' => array(
                'driver'    => 'mysql',
                'host'      => $sqlCreds['hostname'],
                'database'  => $sqlCreds['name'],
                'username'  => $sqlCreds['username'],
                'password'  => $sqlCreds['password'],
                'charset'   => 'utf8',
                'collation' => 'utf8_unicode_ci',
                'prefix'    => '',
        ),

在推送项目的同时,我还编辑了composer.json文件来迁移数据库。

"scripts": {
        "post-install-cmd": [
            "php htdocs/artisan clear-compiled",
            "php htdocs/artisan optimize",
            "php htdocs/artisan migrate --force"
        ],
        "post-update-cmd": [
            "php htdocs/artisan clear-compiled",
            "php htdocs/artisan optimize"
        ],
        "post-create-project-cmd": [
            "php htdocs/artisan key:generate"
        ]
    },

但是当我推送项目时,出现以下错误;

 [PDOException]         
  could not find driver  
migrate [--bench[="..."]] [--database[="..."]] [--force] [--path[="..."]] [--package[="..."]] [--pretend] [--seed]
Script php htdocs/artisan migrate --force handling the post-install-cmd event returned with an error
  [RuntimeException]                                                                                                  
  Error Output:                                                                                                       
    [PDOException]                                                                                                    
    could not find driver                                                                                             
  migrate [--bench[="..."]] [--database[="..."]] [--force] [--path[="..."]] [--package[="..."]] [--pretend] [--seed]  
install [--prefer-source] [--prefer-dist] [--dry-run] [--dev] [--no-dev] [--no-plugins] [--no-custom-installers] [--no-autoloader] [--no-scripts] [--no-progress] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader] [--ignore-platform-reqs] [packages1] ... [packagesN]
-----> Composer command failed
Traceback (most recent call last):
  File "/tmp/buildpacks/php-buildpack/scripts/compile.py", line 51, in <module>
    .from_build_pack('lib/additional_commands')
  File "/tmp/buildpacks/php-buildpack/lib/build_pack_utils/builder.py", line 189, in extensions
    process_extension(path, ctx, 'compile', process, args=[self])
  File "/tmp/buildpacks/php-buildpack/lib/build_pack_utils/utils.py", line 69, in process_extension
    success(getattr(extn, to_call)(*args))
  File "/tmp/buildpacks/php-buildpack/extensions/composer/extension.py", line 420, in compile
    return composer.compile(install)
  File "/tmp/buildpacks/php-buildpack/lib/extension_helpers.py", line 154, in compile
    self._compile(install)
  File "/tmp/buildpacks/php-buildpack/extensions/composer/extension.py", line 173, in _compile
    self.run()
  File "/tmp/buildpacks/php-buildpack/extensions/composer/extension.py", line 305, in run
    *self._ctx['COMPOSER_INSTALL_OPTIONS'])
  File "/tmp/buildpacks/php-buildpack/extensions/composer/extension.py", line 350, in run
    shell=True)
  File "/tmp/buildpacks/php-buildpack/lib/build_pack_utils/runner.py", line 109, in stream_output
    raise CalledProcessError(retcode, cmd)
build_pack_utils.runner.CalledProcessError: Command '<open file '<fdopen>', mode 'w' at 0x7f738ce24810>' returned non-zero exit status 1
Staging failed: Buildpack compilation step failed

FAILED
BuildpackCompileFailed

我是 Bluemix 的新手,还没有弄清楚问题所在。我相信 stackoverflow 社区。任何帮助将不胜感激:)

最佳答案

该错误表示缺少 PDO 驱动程序。您可能需要通过在应用程序的根目录中创建文件 .bp-config/options.json 并将扩展名包含在 options.json 文件中(以及您需要的任何其他文件)来启用 PHP 扩展名应用):

{ "PHP_EXTENSIONS": ["pdo", "pdo_mysql"] }

CF 文档:http://docs.cloudfoundry.org/buildpacks/php/gsg-php-config.html#php-extensions

关于php - 使用 IBM Bluemix 进行 Laravel 数据库迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35078233/

相关文章:

php - mysql - 在一个查询中获取显式值和随机值

java - 如何使用java变量向mysql插入值

php - jQuery UI 自动完成 - 未找到结果

php - 无法使用 Eloquent ORM 更新 mysql 行

php - Laravel 验证规则 'same' 否定检查

PHP 按姓名和姓氏或中间名搜索

php - 使用不同类型的用户在mySQL上创建角色

php - Laravel 中的用户名/密码认证规则

php - 使用 PHP DOM 访问样式属性

mysql - 到期日期为 7 天前,并且没有其他事件