使用PowerShell创buildFastCGI应用程序

我试图自动configurationWindows 2012服务器,但是我无法让PHP工作。

这是我用来添加处理程序映射到IIS的命令:

New-WebHandler -Name "PHP-FastCGI" -Path "*.php" -Verb "*" -Modules "FastCgiModule" -ScriptProcessor "c:\php\php-cgi.exe" -ResourceType File 

这正确地添加处理程序映射,到目前为止非常好。

但是,我仍然需要为可执行文件手动创buildFastCGI应用程序才能使其工作。 什么是PowerShell命令来自动执行此操作? 我找不到任何指向正确方向的东西。

我正在研究同样的问题。 此脚本将更新您的apphostconfiguration,以创buildFastCGI进程池和处理程序映射。

 import-module WebAdministration ############################################################### # Adds a FastCGI process pool in IIS ############################################################### $php = 'C:\php\php-cgi.exe' $configPath = get-webconfiguration 'system.webServer/fastcgi/application' | where-object { $_.fullPath -eq $php } if (!$configPath) { add-webconfiguration 'system.webserver/fastcgi' -value @{'fullPath' = $php } } ############################################################### # Create IIS handler mapping for handling PHP requests ############################################################### $handlerName = "PHP 7.0.12" $handler = get-webconfiguration 'system.webserver/handlers/add' | where-object { $_.Name -eq $handlerName } if (!$handler) { add-webconfiguration 'system.webServer/handlers' -Value @{ Name = $handlerName; Path = "*.php"; Verb = "*"; Modules = "FastCgiModule"; scriptProcessor=$php; resourceType='Either' } } ############################################################### # Configure the FastCGI Setting ############################################################### # Set the max request environment variable for PHP $configPath = "system.webServer/fastCgi/application[@fullPath='$php']/environmentVariables/environmentVariable" $config = Get-WebConfiguration $configPath if (!$config) { $configPath = "system.webServer/fastCgi/application[@fullPath='$php']/environmentVariables" Add-WebConfiguration $configPath -Value @{ 'Name' = 'PHP_FCGI_MAX_REQUESTS'; Value = 10050 } } # Configure the settings # Available settings: # instanceMaxRequests, monitorChangesTo, stderrMode, signalBeforeTerminateSeconds # activityTimeout, requestTimeout, queueLength, rapidFailsPerMinute, # flushNamedPipe, protocol $configPath = "system.webServer/fastCgi/application[@fullPath='$php']" Set-WebConfigurationProperty $configPath -Name instanceMaxRequests -Value 10000 Set-WebConfigurationProperty $configPath -Name monitorChangesTo -Value 'C:\php\php.ini' # Restart IIS to load new configs. invoke-command -scriptblock {iisreset /restart }