установка и чтение переменных среды в IIS 10 - PullRequest
0 голосов
/ 04 ноября 2019

Я не могу понять, как установить и прочитать переменные среды в Microsoft Internet Information Services (IIS) версии 10. У меня есть приложение Fast CGI, для которого требуются переменные среды. В предыдущих версиях IIS я просто устанавливал общесистемные переменные в Windows «Свойства системы». Однако в IIS 10 мое приложение FCGI не читает их. Итак, мой первый вопрос: есть ли шаги, которые необходимо предпринять, чтобы процесс IIS мог читать системные переменные?

В качестве альтернативы, как мне установить переменные среды в IIS 10? Этот сайт Microsoft объясняет это, но не достаточно подробно для меня, чтобы заставить его работать. В частности, в какой файл и в какой раздел вы помещаете раздел <environmentVariables>? Пример XML и пример командной строки имеют name="Contoso" (см. Ниже), но что это - имя пула приложений, или мое приложение FCGI, или что-то еще?

<applicationPools> <add name="Contoso" managedRuntimeVersion="v4.0" managedPipelineMode="Classic"> <environmentVariables> <add name="foo" value="bar" /> </environmentVariables> </add> </applicationPools>

Редактировать в ответ на Jokies Ding: MAP22 и PROJ_LIB - это две переменные окружения, которые мне нужны. В C: \ Windows \ System32 \ inetsrv \ Config \ applicationHost.config у меня есть:

    <applicationPools>
        <add name="DefaultAppPool" />
        <add name=".NET v4.5 Classic" managedRuntimeVersion="v4.0" managedPipelineMode="Classic" />
        <add name=".NET v4.5" managedRuntimeVersion="v4.0" />
        <add name="ASP.NET v4.0" autoStart="true" managedRuntimeVersion="v4.0" />
        <applicationPoolDefaults managedRuntimeVersion="v4.0">
            <processModel identityType="ApplicationPoolIdentity" />
            <environmentVariables>
                <add name="PROJ_LIB" value="/gdal/bin/proj6/SHARE" />
                <add name="MAP22" value="/tetonwy/mapserv/main.map" />
            </environmentVariables>
        </applicationPoolDefaults>
    </applicationPools>

и

    <fastCgi>
        <application fullPath="C:\gdal\bin\ms\apps\mapserv.exe">
            <environmentVariables>
                <environmentVariable name="MAP22" value="C:\tetonwy\mapserv\main.map" />
                <environmentVariable name="PROJ_LIB" value="C:\gdal\bin\proj6\SHARE" />
            </environmentVariables>
        </application>
    </fastCgi>

, а в окне cmd переменные среды видны

C:\>set MAP22 MAP22=C:\tetonwy\mapserv\main.map C:\>set PROJ_LIB PROJ_LIB=C:\gdal\bin\proj6\SHARE

Похоже, что переменные установлены повсеместно, но приложение их не видит. C:\gdal\bin\ms\apps\mapserv.exe - это приложение FastCGI, которое не видит переменные среды. Это скомпилированная программа на C, которую я использовал в предыдущих версиях IIS.

1 Ответ

0 голосов
/ 05 ноября 2019

<environmentVariables> раздел отображается как коллекция в определенном пуле приложений.

Вы можете найти его в глобальном конфигурационном файле IIS C: \ Windows \ System32 \ inetsrv \ config \ applicationhost.config. «Contoso» - это имя пула приложений.

Я думаю, что общесистемная переменная чтения все еще поддерживается в IIS 10 и PHP FAST-CGI. Я могу получить эти настройки, запустив командную строку SET в IIS PHP-CGI.

Не могли бы вы опубликовать код, который вы использовали для чтения переменной?

В некоторых условиях код вашего приложения требуетповышенное разрешение. Можно попытаться изменить идентификатор пула приложений на локальную систему и установить Анонимный аутентифицированный пользователь на идентификатор пула приложений

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...