php htaccess SetEnv指令在MAMP pro 6中不起作用

xytpbqjk  于 2023-01-16  发布在  PHP
关注(0)|答案(1)|浏览(128)

我用PHP开发了一个解决方案
1.框架Phalcon 3.4.5

  1. macOS 12.6
  2. PHP 7.3.33语言
  3. MAMP蛋白6
    我有这个.htaccess是在我的根文件夹:
    SetEnv指令的设置如下:
<IfModule mod_env.c>
SetEnv APPLICATION_ENV=development
</IfModule>

在Apache中加载正确的env模块:

  1. mod_env.so
  2. 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日志中没有错误。
    我不知道为什么。这里欢迎任何帮助?
    谢谢大家!
t5zmwmid

t5zmwmid1#

在htaccess文件中使用SetEnv设置的环境变量在Apache环境中可用,因此您应该使用apache_getenv()$_SERVER超全局来访问变量,而不是getenv()
您似乎正确地使用了SetEnv,其余设置看起来也很好。
也许您对根目录中的.env文件感兴趣,使用vlucas/dotenv加载它,并在代码中使用Dotenv。
下面是使用该软件包的示例:

$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();

它将在__DIR__中查找一个.env文件,并将其加载到您的环境中,使其可通过getenv()使用

相关问题