【问题标题】:How to open DB connection in Openshift? [closed]如何在 Openshift 中打开数据库连接? [关闭]
【发布时间】:2014-03-29 11:54:46
【问题描述】:

这是我在 PHP 中的 dbcon 文件。 基本上,我需要将我的 PHP 应用程序与 openshift MySQL DB 连接起来。这就是我所做的。

<?php

// Database Connection Setting

$dbhost = "127.0.0.1"; // Host name 
$dbport = "3308"; // Host port
$dbusername = "user"; // Mysql username 
$dbpassword = "pass"; // Mysql password 
$db_name = "mf"; // Database name 

$mysqlCon = mysqli_connect($dbhost, $dbusername, $dbpassword, "", $dbport) or die("Error: " . mysqli_error($mysqlCon));
mysqli_select_db($mysqlCon, $db_name) or die("Error: " . mysqli_error($mysqlCon));
?>

这给了我一个关于 openshift 的错误,但适用于其他 PHP 应用程序。我没有得到任何关于错误解释的信息,只是 Error: { ...blank space... }.

【问题讨论】:

  • 你得到的错误是什么?
  • 用户是否有权访问所有数据库,或者只有 mf 数据库?另外,将$db_name 作为第四个参数传递,这样你就可以取消mysqli_select_db 调用
  • 你启用PHP Error Debugging了吗?
  • 我没有收到任何视觉错误。只是一个字符串说“错误:{空白}”。
  • 是的,再挖掘一些并尝试解决方案。有用。我把它放在这里是为了让其他人知道 openshift 的新手。

标签: php mysql git openshift


【解决方案1】:

我已经这样做了。

全球使用

define('DB_HOST', getenv('OPENSHIFT_MYSQL_DB_HOST'));
define('DB_PORT', getenv('OPENSHIFT_MYSQL_DB_PORT'));
define('DB_USER', getenv('OPENSHIFT_MYSQL_DB_USERNAME'));
define('DB_PASS', getenv('OPENSHIFT_MYSQL_DB_PASSWORD'));
define('DB_NAME', getenv('OPENSHIFT_GEAR_NAME'));

$dbhost = constant("DB_HOST"); // Host name 
$dbport = constant("DB_PORT"); // Host port
$dbusername = constant("DB_USER"); // MySQL username 
$dbpassword = constant("DB_PASS"); // MySQL password 
$db_name = constant("DB_NAME"); // Database name 

或者

$dbhost = getenv('OPENSHIFT_MYSQL_DB_HOST'); // Host name 
$dbport = getenv('OPENSHIFT_MYSQL_DB_PORT'); // Host port
$dbusername = getenv('OPENSHIFT_MYSQL_DB_USERNAME'); // MySQL username 
$dbpassword = getenv('OPENSHIFT_MYSQL_DB_PASSWORD'); // MySQL password 
$db_name = getenv('OPENSHIFT_GEAR_NAME'); // Database name 

【讨论】:

  • 为什么不直接使用连接中的常量而不是先将它们分配给常规变量?似乎不需要采取额外的步骤。
  • 哦..是的,没错。我只是php的中间人。把它放在这里只是为了理解别人。您的评论将有助于其他人的发展。谢谢@developercorey。
  • @matrixwebtech 从本地/远程服务器运行应用程序并将数据库保存在不同的服务器上?我不是 100% 确定 Openshift 会通过网络套接字提供 MySQL 访问权限。我读了一篇我们可以配置它的帖子。如果您有一个配置为在 openshift 上运行的 C# 应用程序,那么您将需要用于 db 连接的连接设置。这只是PHP 连接。
【解决方案2】:
define('DB_HOST', getenv('OPENSHIFT_MYSQL_DB_HOST'));
define('DB_PORT', getenv('OPENSHIFT_MYSQL_DB_PORT'));
define('DB_USER', getenv('OPENSHIFT_MYSQL_DB_USERNAME'));
define('DB_PASS', getenv('OPENSHIFT_MYSQL_DB_PASSWORD'));
define('DB_NAME', getenv('OPENSHIFT_APP_NAME'));

$mysqlCon = mysqli_connect(DB_HOST, DB_USER, DB_PASS, "", DB_PORT) or die("Error: " . mysqli_error($mysqlCon));
mysqli_select_db($mysqlCon, DB_NAME) or die("Error: " . mysqli_error($mysqlCon));

或者更好的是,只需在连接字符串中使用环境变量:

$mysqlCon = mysqli_connect(getenv('OPENSHIFT_MYSQL_DB_HOST'), getenv('OPENSHIFT_MYSQL_DB_USERNAME'), getenv('OPENSHIFT_MYSQL_DB_PASSWORD'), "", getenv('OPENSHIFT_MYSQL_DB_PORT')) or die("Error: " . mysqli_error($mysqlCon));
mysqli_select_db($mysqlCon, getenv('OPENSHIFT_APP_NAME')) or die("Error: " . mysqli_error($mysqlCon));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-31
    • 2017-02-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多