我正在尝试自动配置
Windows 2012服务器,但我无法让
PHP工作.
这是我用来添加处理程序映射到IIS的命令:
New-WebHandler -Name "PHP-FastCGI" -Path "*.PHP" -Verb "*" -Modules "FastCgiModule" -ScriptProcessor "c:\PHP\@R_301_125@.exe" -ResourceType File
这正确地添加了处理程序映射,到目前为止一直很好.
但是,我仍然需要为可执行文件手动创建FastCGI应用程序以使其工作.什么是PowerShell命令来自动执行此操作?我找不到任何指向正确方向的东西.
我正在研究同样的问题.此脚本将更新您的apphost配置以创建FastCGI进程池和处理程序映射.
import-module WebAdministration ############################################################### # Adds a FastCGI process pool in IIS ############################################################### $PHP = 'C:\PHP\@R_301_125@.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 }