Установка серверных переменных внутри файла .htaccess - это префикс имен переменных с помощью REQUEST_ - PullRequest
1 голос
/ 25 октября 2019

Я пытаюсь установить некоторые переменные окружения в моем файле .htaccess, например, так:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

SetEnv DB_NAME my_database
SetEnv DB_USER root
SetEnv DB_PASSWORD root
SetEnv DB_HOST 127.0.0.1

# END WordPress

Однако, когда я использую любую из этих переменных в моем php-коде, они префиксуются с REQUEST_ для некоторых странностей. причина, и это только на моем компьютере.

Так, например, $_SERVER['DB_NAME'] не будет работать, но $_SERVER['REQUEST_DB_NAME'] будет работать нормально.

Как я уже говорил, это только на моем компьютере, который использует MAMP PRO для запуска apache.

Любая причина, по которой это могло бы произойти, для меня не имеет смысла, так как я не видел никаких конфигов, которые могли бы вызвать это тоже

1 Ответ

0 голосов
/ 26 октября 2019

Не идеально, но мне пришлось исправить проблему с помощью сниппета, чтобы удалить REDIRECT_, если он существует. Так что теперь вместо того, чтобы делать $_SERVER['DB_USER'];, я должен использовать getVar('DB_USER');

function getVar($key) {
   $prefix = "REDIRECT_";
   if(array_key_exists($key, $_SERVER))
   return $_SERVER[$key];
   foreach($_SERVER as $k=>$v) {
     if(substr($k, 0, strlen($prefix)) == $prefix) {
     if(substr($k, -(strlen($key))) == $key)
     return $v;
    }
  }

  return null;
}

Если кто-то нашел решение этой проблемы без добавления дополнительного кода PHP, пожалуйста, дайте мне знать!

...