我用PHP开发了一个解决方案
1.框架Phalcon 3.4.5
- macOS 12.6
- PHP 7.3.33语言
- MAMP蛋白6
我有这个.htaccess是在我的根文件夹:
SetEnv指令的设置如下:
<IfModule mod_env.c>
SetEnv APPLICATION_ENV=development
</IfModule>
在Apache中加载正确的env模块:
- mod_env.so
- mod_setenvif.so
我的主机配置具有AllowAoverride所有我的访问文件名设置为htaccess
我在索引文件中使用这段代码来读取环境变量,但无法获得值。defined('ENVIRONMENT') || define('ENVIRONMENT', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));
echo ENVIRONMENT . PHP_EOL;
考虑到SetEnv在htaccess中,应该得到开发是有价值的,但是我不断得到生产。
我做了测试以确保mod_env和mod_setenvif被加载。在我的apache日志和php日志中没有错误。
我不知道为什么。这里欢迎任何帮助?
谢谢大家!
1条答案
按热度按时间t5zmwmid1#
在htaccess文件中使用
SetEnv
设置的环境变量在Apache环境中可用,因此您应该使用apache_getenv()
或$_SERVER
超全局来访问变量,而不是getenv()
。您似乎正确地使用了SetEnv,其余设置看起来也很好。
也许您对根目录中的.env文件感兴趣,使用vlucas/dotenv加载它,并在代码中使用Dotenv。
下面是使用该软件包的示例:
它将在
__DIR__
中查找一个.env文件,并将其加载到您的环境中,使其可通过getenv()
使用