簡體   English   中英

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

[英]htaccess SetEnv directive is not working in MAMP pro 6

我有一個用 PHP 開發的解決方案

  1. 框架 Phalcon 3.4.5
  2. macOS 12.6
  3. PHP 7.3.33
  4. MAMP 專業版 6

我的根文件夾中有這個 .htaccess:

SetEnv 指令設置如下:

<IfModule mod_env.c>
SetEnv APPLICATION_ENV=development
</IfModule>

正確的env模塊加載在Apache:

  1. mod_env.so
  2. mod_setenvif.so

我的主機配置有 AllowAoverride All 我的 AccessFileName 設置為.htaccess

我在索引文件中使用這段代碼來讀取環境變量,但無法獲取值。

defined('ENVIRONMENT') || define('ENVIRONMENT', (getenv('APPLICATION_ENV')? getenv('APPLICATION_ENV'): 'production'));

echo ENVIRONMENT. PHP_EOL;

考慮到.htaccess 中的SetEnv,應該get development 有價值,但我一直get production。

我確實進行了測試以確保加載了 mod_env 和 mod_setenvif。 我的apache日志和php日志都沒有報錯。

我不知道為什么。 歡迎任何幫助?

謝謝!

在 .htaccess 文件中使用 SetEnv 設置的環境變量在SetEnv環境中可用,因此您應該使用apache_getenv()$_SERVER superglobal 來訪問變量而不是getenv()

您似乎正確使用了 SetEnv,並且您的設置的 rest 看起來不錯。

也許您可能對根目錄中的 .env 文件感興趣,並使用vlucas/dotenv加載它,然后在您的代碼中使用 Dotenv。

這是使用 package 的示例:

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

它將在__DIR__中查找 an.env 文件並將它們加載到您的環境中,通過getenv()使它們可用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM