我在开发和生产服务器上运行的脚本有不同的配置文件。 问题是,我能以某种方式检测出哪个是哪个?
答案 0 :(得分:6)
根据您所在的服务器,提供不同的引导程序文件。所以
include "bootstrap.php";
// your script etc..
在生产框中,bootstrap.php将有一个常量IS_DEV = FALSE
在开发框中,bootstrap.php将具有相同的常量IS_DEV = TRUE
因此,相同的脚本将包含相同的文件名bootstrap.php,但bootstrap的内容将具有IS_DEV
常量变量的不同值。
答案 1 :(得分:2)
可供选择的一些解决方案:
config.ini
和config.ini.dist
策略(.dist
在另一个不存在时读取).htaccess
或虚拟主机配置中设置一些环境变量,并使用getenv
基本上,你只需要比较那两台机器上不同的东西,或者设置一些变量作为参考。
.htaccess
的示例:
在.htaccess
中(仅在登台服务器上):
SetEnv APPLICATION_ENVIRONMENT staging
在PHP脚本中:
if ('staging' === getenv('APPLICATION_ENVIRONMENT')) {
// use config_staging.ini
} else {
// use config_develop.ini
}
请注意,您可以在一个配置文件中包含所有内容,只需将其分为几个部分。
我认为这可以称为良好做法,因为Zend Framework手册中建议这样做。
如果您有权访问控制台(在开发环境中肯定有),可以通过shell变量设置此标志:
export APPLICATION_ENVIRONMENT=development
Windows上的:
SET APPLICATION_ENVIRONMENT=development
然后使用PHP中的getenv
读取它。
答案 2 :(得分:-1)
if (PHP_SAPI === 'cli') {
echo 'running in console!';
}