Невозможно установить переменные среды в Apache

Я пытаюсь установить переменные среды в Apache для небольшой дополнительной безопасности и получить к ним доступ с помощью PHP. Я использую SetEnv внутри директивы VirtualHost в httpd.conf. Итак, в httpd.conf у меня есть:

<VirtualHost *:80>
    DocumentRoot "/var/www/html"
    ServerName "website.com"
    ServerAlias "www.website.com"
    SetEnv myDatabaseServer myserver.rds.amazonaws.com
    SetEnv myPort 3306
    SetEnv myUsername Username
    SetEnv myPassowrd Password
    RewriteEngine on
    RewriteCond %{SERVER_NAME} =website.com [OR]
    RewriteCond %{SERVER_NAME} =www.website.com
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

Используя файл phpinfo(), я не вижу ни одной из моих переменных окружения в списке, и я также не могу получить к ним доступ в PHP с помощью getenv, поэтому я предполагаю, что они никогда даже не попадут туда. Я всегда обязательно перезапускаю httpd после изменений. Я знаю, что должен упустить что-то маленькое, но мне редко приходится копаться в файлах конфигурации, поэтому я надеюсь, что кто-нибудь может дать мне некоторые идеи или предложения. Это сервер AWS. Не знаю, имеет ли это значение, но доступ к серверу осуществляется по защищенному https. Спасибо за любую помощь!


person sax    schedule 06.03.2021    source источник
comment
Я установил это на своем сервере разработки, перезапустил Apache и модуль FPM, который я использую. phpinfo() не показывает дополнительные переменные, но PHP прекрасно их читает и выводит.   -  person Tangentially Perpendicular    schedule 07.03.2021
comment
Спасибо за предложения. Я попытался запустить как Apache, так и FPM, как вы указали. Я по-прежнему не вижу переменную в phpinfo(), и PHP не будет отображать их с помощью getenv или $_SERVER. Я также посмотрел на вашу вторую ссылку и не смог заставить ее работать. Я новичок в этом и чувствую, что, возможно, мой VirtualHost вообще игнорируется, но я не уверен, почему. Я постоянно натыкаюсь на сообщения, в которых говорится, что при использовании http используйте порт 80, а при использовании https используйте 443 для VirtualHost. Мой сайт https, так что мне нужно где-то иметь ‹VirtualHost *:443›?   -  person sax    schedule 07.03.2021
comment
Я не получаю никаких ошибок, когда пытаюсь повторить созданные переменные среды, я просто получаю пустое окно браузера. Ошибок консоли тоже нет. Я также пытался включить 443 VirtualHost, но затем у меня появились ошибки, что браузер не может обслуживать мои файлы. Еще ищете.   -  person sax    schedule 07.03.2021
comment
Вы можете изменить .../bin/envvars (в том же каталоге, что и apachectl). Этот файл загружается, когда вы запускаете apache, настраивая свои переменные.   -  person Nic3500    schedule 07.03.2021


Ответы (1)


Получается, что при настройке этого сервера я установил автоматически обновляемый SSL-сертификат. Я новичок во всей этой веб-разработке, поэтому я просто понял, что ВСЕ попало в файл httpd.conf, когда дело дошло до Apache. Мальчик был я неправ. Когда я создал этот сертификат, было настроено около дюжины других конфигурационных файлов. Я просмотрел их один за другим и в конце концов нашел один с именем httpd-le-ssl.conf. В этой конфигурации была настройка VirtualHost, прослушивающая 443. Я вставил туда свои переменные среды, и вуаля, это сработало!

Спасибо за предложения!

person sax    schedule 07.03.2021