【问题标题】:How to connect to a SQL Database-s2 from a .php application in BlueMix如何从 BlueMix 中的 .php 应用程序连接到 SQL Database-s2
【发布时间】:2016-04-11 14:01:09
【问题描述】:

所以我在我的私人服务器上创建了一个 www 站点。它基本上是一个 PHP + javascript 页面。现在我需要将其移至 BlueMix。唯一的问题是,虽然我现在在我的私人服务器上使用了 MySQL 数据库,但我现在需要在 BlueMix 上使用 SQL Database-s2 和所有(我的 php 页面和数据库)。

迈克

【问题讨论】:

    标签: php sql ibm-cloud


    【解决方案1】:

    您必须从 VCAP_SERVICES\service 凭据中解析数据库信息。

    如果您的数据库服务是“SQL 数据库”,您可以使用此示例代码连接到 SQLDB:

    //parse VCAP_SERVICES Environment variable
    $vcap_services = $_ENV["VCAP_SERVICES"];
    $services_json = json_decode($vcap_services,true);
    $sqldb = $services_json["sqldb"];
    if (empty($sqldb)) {
        echo "No sqldb service instance is bound. Please bind a sqldb service instance";
        return;
    }
    
    //Get Credentials object (db,host,port,username,password)
    $sqldb_config = $services_json["sqldb"][0]["credentials"];
    
    $conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=".
       $sqldb_config["db"].
       ";HOSTNAME=".
       $sqldb_config["host"].
       ";PORT=".
       $sqldb_config["port"].
       ";PROTOCOL=TCPIP;UID=".
       $sqldb_config["username"].
       ";PWD=".
       $sqldb_config["password"].
       ";";
    
    
    $conn = db2_connect($conn_string, '', ''); //db connection
    

    信息会自动从 VCAP_SERVICES 中检索。 应用程序读取环境。变量并自动检索用户名、主机、数据库密码字段。

    但是你可以手动设置db、host、port、username、password 查看 服务的服务凭证

    如何检索凭证信息:

    • 来自仪表板用户界面

      1. 在仪表板 UI 中单击您的服务图标
      2. 在新页面的左侧菜单中,点击“Service Credentials”
      3. 如果您没有看到任何凭据,但看到“添加凭据”按钮,请单击此按钮,根据需要编辑名称凭据,然后单击“添加”按钮。
      4. 这样您将看到服务信息(凭据)
    • 从 CF 命令行

      cf env your_app_name

    在我们使用 DB2 模块的代码中:当您将 SQLDB 与 PHP 一起使用时,请使用以下 buildpack https://github.com/ibmdb/db2heroku-buildpack-php。它将安装“ibm_db2”php 模块供您使用。

    您可以在将应用程序推送到 Bluemix 上时设置 buildpack:

    cf push <your_app_name> -b https://github.com/ibmdb/db2heroku-buildpack-php
    

    【讨论】:

    • 我使用 MySQL 在我的私人服务器上构建了整个网页,但现在我必须将其转移到 IBM 资源...虽然 BlueMix 允许 ClearDB,但它是一个“第三方”解决方案;/所以现在我必须重写所有查询和与 DB 的连接,以便它与 DB2 一起工作......我可以看到你也是 IBM 人。如果代码有问题,可以联系您吗?
    • Crescenzo,正如我所写,我已经构建了整个工具,我现在需要重新构建它以托管在 BlueMix 上。我会尽我所能,以后也许我们可以打个电话什么的,如果我被卡住了?我有几个问题:A)您在上面给我发送了一个链接的 buildpack... 我该如何安装它?在我的笔记本电脑上还是在 BlueMix 上?我该怎么办?我知道这是一个愚蠢的问题,但我对 BlueMix 很陌生 B) 在您提供的 PHP 代码中...我不完全确定在哪里放置密码和用户名 C) 以及我的密码和用户名是什么D B。它与我的 BlueMix 凭据相同吗?
    【解决方案2】:

    您可以使用 PHP buildpack 在 Bluemix 上部署您的应用程序。在创建 SQL 数据库实例并将其绑定到 Bluemix 上的 PHP 应用程序之后,要连接到 Bluemix 中的 SQLDB 服务,您可以使用 db2_connect 和从 VCAP_SERVICES 环境变量中检索到的凭证。我不知道您的业务需求,但是如果您想保持跨环境的一致性并且不想迁移到另一个 RDBMS,您可以尝试ClearDB,这是一个可靠、容错、地理分布的数据库-as -a-service 用于 MySQL 驱动的应用程序。

    【讨论】:

    • 我很想使用 ClearDB MySQL ...。我使用 MySQL 在我的私人服务器上构建了整个网页,但现在我必须将它转移到 IBM 资源...而 BlueMix 允许ClearDB 它是一个“第三方”解决方案;/
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多