【发布时间】: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