【问题标题】:Openshift: databases environment variables are not set in PHPOpenshift:未在 PHP 中设置数据库环境变量
【发布时间】:2016-11-23 08:30:05
【问题描述】:

我在 Openshift 上创建了一个 php 应用程序。然后我在我的应用程序中添加了一个 MySQL 数据库。之后我可以使用env 命令在SSH shell 中查看数据库相关变量。

但是,当我尝试使用环境变量来设置数据库连接时,它不会将它们重新运行到我的 php 代码中。例如:

<?php
echo('App: '.$_ENV["OPENSHIFT_APP_NAME"].'<br/>');
echo('Host: '.$_ENV["OPENSHIFT_MYSQL_DB_HOST"]);

OPENSHIFT_APP_NAME 正确返回应用程序名称,但 OPENSHIFT_MYSQL_DB_HOST 为空且主机信息不可用。

我还在控制台中重新启动了我的应用程序。 作为通知,我使用 WinScp 直接上传我的应用程序,但我不确定 php 应用程序的部署是否需要或多或少的东西(比如一些 require 的东西)?

更新:

当我检查 phpMyAdmin 代码时,我看到它有一个文件 'conf.d/passenv.conf',其语法如下:

PassEnv OPENSHIFT_MYSQL_DB_PORT 

帮我解决我的问题。

【问题讨论】:

  • rhc env-list(列出所有环境变量)rhc env-set {VARIABLE1}={VALUE1} {VARIABLE2}={VALUE2}(分配你自己的...)Check out this link...define('DB_HOST', getenv('OPENSHIFT_MYSQL_DB_HOST'));
  • @zipzit 应该是在我添加新墨盒时已经定义了它们。因为它们可能是服务器配置的变化,我不应该手动定义它们。
  • 糟糕。抱歉,如果这太微妙了。打开 RHC,然后输入rhc env-list,然后告诉我们结果是什么。然后执行几个echo(getenv('OPENSHIFT_MYSQL_DB_HOST') );(适用于从上述环境列表观察到的环境变量)并使用tail-all 命令查看PHP 代码的结果(如果使用日志文件)。注意:getenv.. 不是 $_ENV(尽管据我所知,两者在 PHP 中都可以正常工作)
  • 问题:您是使用PHP, MySQL, and phpMyAdmin 包创建您的装备,还是仅使用PHP 然后添加MySQL
  • 不确定你已经投入了多少时间,但我很想删除装备并尝试集成PHP, MySQL and PhpMyAdmin 包,看看结果是否更好......注意:该选项仅在添加装备页面上的PHP (See All) 链接中可见。 Link here..

标签: php mysql openshift openshift-cartridge openshift-php-cartidges


【解决方案1】:

您需要停止并启动(而不是重新启动)您的应用程序,因为您在创建应用程序后添加了 MySQL。 使用 rhc app stop 和 rhc app start 命令。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-10
    • 2014-09-05
    • 2016-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多