IBM Cloud — Bluemix — Подключите dashDB к PHP-приложению

Я видел этот очень полезный пост Вопросы и попытался следовать изложенным шагам. Однако я новичок в этом, так что я думаю, что, возможно, где-то напутал.

Я пытался адаптировать код на веб-странице, которая была создана для входа в мою ситуацию.

Я делаю календарь, поэтому мне нужна эта база данных. Основная цель: создать в Bluemix веб-приложение, похожее на календарь, и привязать к нему службу базы данных, чтобы я мог хранить события.

Вот шаги, которые я предпринял:

  1. создал сайт с PHP, HTML и CSS
  2. Свяжите службу (dashDB) и поместите в таблицу, загрузив файл .csv, который имеет два столбца, один из которых помечен именами пользователей, а другой — паролями. Было две записи, (Джессика — Фиш, Том — Медведь) Это называется USERNAMEFILE
  3. включил файл php, который будет подключаться к базе данных под названием ConexionDB.php
  4. ‘Требуется’ файл ConexionDB.php в файле php с именем index.php, где я пытаюсь получить доступ к базе данных. При попытке получить доступ к базе данных я просто пытался увидеть, смогу ли я. В настоящее время он не служит никакой другой цели, кроме как распечатать номер 1.

Однако, когда я делаю все это, а затем выдвигаю свой проект с помощью этой команды «cf push HybridCloudEventsTest -b GitHub и затем перейти на мой сайт, я получаю, что страница не работает код ошибки 500. Я также могу добавить, что случилось в моей строке cmd, если это поможет. Я также изложил свой код ниже с заголовками каждого файла. Я не включил весь свой файл index.php, так как он работал до того, как я вставил код базы данных, поэтому я считаю, что именно в этом проблема. Если вам нужен мой индекс и код CSS, я также могу опубликовать его. Любая помощь приветствуется

ConexionDB.php

<?php
if( getenv("VCAP_SERVICES") ) {
$json = getenv("VCAP_SERVICES");
}
// No DB credentials
else {
throw new Exception("No Database Information Available.", 1);
}

// Decode JSON and gather DB Info
$services_json = json_decode($json,true);
$bludb_config = $services_json["dashDB"][0]["credentials"];

// Create DB connect string
$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=".
$bludb_config["db"].
";HOSTNAME=".
$bludb_config["host"].
";PORT=".
$bludb_config["port"].
";PROTOCOL=TCPIP;UID=".
$bludb_config["username"].
";PWD=".
$bludb_config["password"].
";";

?>

index.php

<html>
<head>
<link href="style.css" type="text/css" rel="stylesheet" />
</head>

<body><?php

//Include DB conexion
require('includes/ConexionDB.php');

$tbl_name="SCHEMA.USERNAMEFILE"; // Table name

// username and password sent from form
$myusername="Jessica";
$mypassword="Fish";

// Connect to BLUDB
$conn = db2_connect($conn_string, '', '');
if ($conn) {

// Prepare, execute SQL and iterate through resultset
$sql="SELECT count(*) FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";

$stmt = db2_prepare($conn, $sql);
$result = db2_execute($stmt);

echo $result;
?>

</body>
</html>

ср журнал (Я не смог бы здесь все это вместить, но дай мне знать, если тебе нужны другие строки или есть какой-то другой способ показать это тебе)

In file included from /tmp/staged/app/clidriver/include/sqlcli1.h:45:0,
from /tmp/pear/temp/ibm_db2/php_ibm_db2.h:37,
from /tmp/pear/temp/ibm_db2/ibm_db2.c:34:
/tmp/staged/app/clidriver/include/sqlcli.h:870:0: warning: "ODBCVER" redefined [
enabled by default]
^
In file included from /app/php/include/php/TSRM/tsrm_config.h:1:0,
from /app/php/include/php/TSRM/tsrm_config_common.h:13,
from /app/php/include/php/TSRM/tsrm_virtual_cwd.h:27,
from /app/php/include/php/main/php.h:401,
from /tmp/pear/temp/ibm_db2/ibm_db2.c:30:
/app/php/include/php/main/../main/php_config.h:2095:0: note: this is the location of the previous definition
#define ODBCVER 0x0300

/tmp/pear/temp/ibm_db2/ibm_db2.c:1299:32: warning: cast to pointer from integer
of different size [-Wint-to-pointer-cast]
^
/tmp/pear/temp/ibm_db2/ibm_db2.c:1308:32: warning: cast to pointer from integer
of different size [-Wint-to-pointer-cast]
SQL_ATTR_CURSOR_TYPE, (SQLPOINTER)vParam, /* was (SQLPOINTER)&vParam */
SQL_ATTR_CURSOR_TYPE, (SQLPOINTER)vParam,
^
/tmp/pear/temp/ibm_db2/ibm_db2.c:1328:32: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
SQL_ATTR_CURSOR_TYPE, (SQLPOINTER)vParam, /* was (SQLPOINTER)&vParam */

^

/tmp/pear/temp/ibm_db2/ibm_db2.c:1357:37: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
SQL_ATTR_ROWCOUNT_PREFETCH, (SQLPOINTER)vParam,
^/tmp/pear/temp/ibm_db2/ibm_db2.c:1495:89: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
rc = SQLSetConnectAttr((SQLHDBC)((conn_handle*)handle)->hdbc, SQL_ATTR_AUT
OCOMMIT, (SQLPOINTER)pvParam, SQL_IS_INTEGER);

^

----------------------------------------------------------------------
/tmp/pear/temp/pear-build-vcaph4uzHz/ibm_db2-1.9.9/modules
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,--rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
Libraries have been installed in:
Build complete.
Don't forget to run 'make test'.requested state: started
instances: 1/1
usage: 128M x 1 instances
urls: hybridcloudeventstest.mybluemix.net
last uploaded: Tue Jun 28 18:20:09 UTC 2016
stack: unknown
buildpack: https://github.com/ibmdb/db2heroku-buildpack-php

state     since                    cpu    memory        disk           deta
ils
#0   running   2016-06-28 02:21:50 PM   0.0%   67M of 128M   178.1M of 1G

1

Решение

Вы должны убедиться, что ваше CF-приложение содержит драйверы dashDB / DB2 для PHP. Добавление этого к вашей команде cf push исправит это,
-b https://github.com/ibmdb/db2heroku-buildpack-php

2

Другие решения

Вам необходимо установить пакетный драйвер db2.

Запустите эту команду, если у вас установлен Cloud Foundry: cf push -b https://github.com/ibmdb/db2heroku-buildpack-php

Или же

Добавьте опцию buildpack в файл manifest.yml [manifest.yml] Buildpack: https://github.com/ibmdb/db2heroku-buildpack-php

0