@paper_castle
Фрилансер

Чем заменить установку переменных окружения Apache?

Есть легаси на PHP, где огромное количество кастомных страниц, дивным образом связанных узами API и магии.
В некоторых каталогах настройки задаются через такие конструкции в .htaccess:
SetEnvIf Request_URI ".*" APP_SETTINGS=app-settings-12
SetEnvIf Request_URI ".*" API_ENDPOINT=app-endpoint-outer
SetEnvIf Request_URI ".*" USE_SHOTLINKS=false


Т.е. для каталога задается перменная окружения, далее где-то в коде они берутся, проверяются с уверенностью в том, что в этом и вложенных эти переменные будут именно такими, при том что точек входа в каталоге не связанных друг с другом может быть несколько. Но не Apache единым, есть планы на nginx, поэтому в поисках альтерантивы.
Подключать во все файлы файл конфига или .env. Неудобно, файлов много. Либо нужно всё переписывать на единые точки входа, решать проблемы маршрутизации, что тоже неудобно.

Какие могут быть альтернативы?
  • Вопрос задан
  • 58 просмотров
Решения вопроса 2
@dodo512
На nginx для каждой папки нужен будет отдельный location ~ \.php со своим набором fastcgi_param
Например
fastcgi_param APP_SETTINGS   app-settings-12;
fastcgi_param API_ENDPOINT   app-endpoint-outer;
fastcgi_param USE_SHOTLINKS  false;


Другой вариант с помощью auto_prepend_file подключать во все файлы свой скрипт который будет ставить нужные значения переменных.
fastcgi_param PHP_VALUE      auto_prepend_file=$document_root/file.php;
Ответ написан
Комментировать
Lynn
@Lynn
nginx, js, css
Третий вариант, задавать переменные через map

map $uri $APP_SETTINGS {
  default "";
  ~^/path1/ app-settings-12;
  ~^/path2/ app-settings-100500;
}

server {
  location ~\.php$ {
    fastcgi_pass ...;
    fastcgi_param APP_SETTINGS $APP_SETTINGS if_not_empty;
    ...
  }
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы