我喜欢它在Zend Framework中的工作原理.我可以通过检查控制器中的APPLICATION_ENV常数来了解我当前使用的环境.
<VirtualHost *:80>
#ServerName
#DocumentRoot
SetEnv APPLICATION_ENV "development"
# Directory
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
但不幸的是,我不能在我当前的项目中使用ZF.如何在PHP代码中检查此环境变量?
我想基于每个虚拟主机自动更改我的数据库连接设置,这样我就不必编辑任何PHP代码,因为它从暂存转移到实时但访问不同的数据库.这是在一个专用服务器上.
所以我想知道,我可以在httpd.conf中设置一个PHP变量或常量作为vhost定义的一部分,然后该站点可以自动将其自身指向测试数据库吗?
$database = 'live';
if (some staging environment variable is true) {
$database = 'testing'; // and not live
}
Run Code Online (Sandbox Code Playgroud)
如果这是不可能的,我想在这种情况下我可以安全地检查我正在运行的主机名,但我想要一些不那么脆弱的东西
希望这是有道理的
非常感谢
伊恩
我正在尝试在我的PHP应用程序中使用自定义环境变量进行环境检测.我在/ etc/environment中设置了系统范围的变量,重新启动,并检查它是否通过终端使用printenv可见.
我还检查了在命令行运行PHP时它是否可见:
php -r 'echo getenv("LOCAL_DEVELOPMENT");'
//returns 'true' as expected
Run Code Online (Sandbox Code Playgroud)
但是当我从网页脚本尝试时,找不到变量:
var_dump(getenv("LOCAL_DEVELOPMENT"));
//returns 'boolean false' (not expected)
Run Code Online (Sandbox Code Playgroud)
我正在使用Ubuntu 12.04 LTS,PHP 5.4和Apache 2.2.
为什么变量在Web脚本中不可见,我该如何解决?
Laravel 4.1删除了使用域来检测应用程序运行环境的功能.阅读他们现在建议使用主机名的文档.但是,对我来说,如果你在一个团队中工作,这似乎很麻烦.每个人都应该更改bootstrap/start.php文件并添加自己的主机名,以便能够在开发环境中运行应用程序吗?另外,如果您想在同一台机器上拥有两个不同的环境,该怎么办?
如果您在Laravel 4.1+团队中工作,如何最好地检测环境?
我将把一个Laravel应用程序的几个实例部署到一个唯一的服务器上.每个实例都需要不同的数据库配置.基于主机名的默认Laravel环境配置对我不起作用,因为所有应用程序都将位于同一服务器上,因此无法确定要使用哪个配置文件.这是我的bootstrap/start.php档案:
$env = $app->detectEnvironment(array(
'development' => array('Ariels-MacBook-Pro.local'),
'server' => array('srv-hostname'),
));
Run Code Online (Sandbox Code Playgroud)
我可以基于域定义环境(因为我的应用程序区域将位于不同的域),这将是很好的,所以这样我就可以为每个域定义不同的配置(托管在同一台服务器上)
有任何想法吗?