Windows 2012サーバーのプロビジョニングを自動化しようとしていますが、PHPが機能しません。
これは、IISにハンドラーマッピングを追加するために使用しているコマンドです。
New-WebHandler -Name "PHP-FastCGI" -Path "*.php" -Verb "*" -Modules "FastCgiModule" -ScriptProcessor "c:\php\php-cgi.exe" -ResourceType File
これにより、ハンドラーマッピングが正しく追加されます。
ただし、実行可能ファイルを機能させるには、FastCGIアプリケーションを手動で作成する必要があります。これを自動化するPowerShellコマンドとは何ですか?私を正しい方向に向かわせるものは何も見つかりません。
私は同じ問題に取り組んでいました。このスクリプトはapphost構成を更新して、FastCGIプロセスプールとハンドラーマッピングの両方を作成します。
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 }