Указание аргументов AppCmd с одинарной кавычкой
Я пытаюсь настроить сайт в IIS в Windows 2016 с помощью appcmd.exe. В частности, PHP и FastCGI. Я сталкиваюсь с проблемой, где указание параметра arguments с одинарными кавычками не удается. Кажется, я не могу понять, как избежать этого или что требуется заклинание цитат. Вот команда, которая работает:
%windir%\system32\inetsrv\appcmd.exe set config /section:system.webServer/fastCGI /+"[fullPath='c:\php\php-cgi.exe', arguments='-d open_basedir=E:\Web\www.example.com;E:\Sessions\www.example.com;E:\Logs\www.example.com;E:\Temp\www.example.com', maxInstances='0', instanceMaxRequests='10000']" /commit:apphost
С open_basedir на винде мне нужно
-d open_basedir=E:\Web\www.example.com;E:\Sessions\www.example.com;E:\Logs\www.example.com;E:\Temp\www.example.com
быть заключенным в одинарные кавычки. Как это:
-d open_basedir='E:\Web\www.example.com;E:\Sessions\www.example.com;E:\Logs\www.example.com;E:\Temp\www.example.com'
Если я сначала создаю приложение FastCGI без аргументов, я могу добавить их потом так:
%windir%\system32\inetsrv\appcmd.exe set config /section:system.webServer/fastCGI /[fullPath='c:\php\php-cgi.exe'].arguments:"-d open_basedir='E:\Web\www.example.com;E:\Sessions\www.example.com;E:\Logs\www.example.com;E:\Temp\www.example.com'" /commit:apphost
Эта проблема заключается в том, что я не могу изменить дополнительные настройки после этого, потому что я не могу указать путь в одинарных кавычках с помощью appcmd.
Я могу сделать это с помощью интерфейса IIS Manager и с помощью кода C#. Так что определенно можно установить это так. Я просто не могу получить правильный формат для appcmd.
2 ответа
Вы используете две одинарные кавычки, чтобы указать одинарную кавычку в строке, например
C:\Windows\System32\inetsrv\appcmd.exe set config -section:system.webserver/httpProtocol /+"customHeaders.[name='Content-Security-Policy',value='default-src ''self'';']"
Я наткнулся на ваш вопрос, пытаясь найти тот же ответ. Я нашел обходной путь и хотел сообщить вам.
Используйте функцию ввода-вывода XML в appcmd.exe. На сайте с правильными заголовками, запустите appcmd list config /section:httpProtocol /xml > addheaders.xml и сохраните выходной файл. В другой системе вы можете запустить appcmd set config / в Я уверен, что вы можете найти способ включить xml в скрипт, если не хотите полагаться на дополнительный файл.