private/Set-PhpIniForTests.ps1

function Set-PhpIniForTests {
    <#
    .SYNOPSIS
        Set PHP INI for tests.
    .PARAMETER BuildDirectory
        Build directory
    .PARAMETER Arch
        Architecture (x86 or x64)
    .PARAMETER Opcache
        Opcache
    .PARAMETER TestType
        Test type
    #>

    [OutputType()]
    param (
        [Parameter(Mandatory = $true, Position=0, HelpMessage='Build directory')]
        [ValidateNotNull()]
        [ValidateLength(1, [int]::MaxValue)]
        [string] $BuildDirectory,
        [Parameter(Mandatory = $true, Position=1, HelpMessage='Architecture')]
        [ValidateNotNull()]
        [ValidateSet('x86', 'x64')]
        [string] $Arch,
        [Parameter(Mandatory = $true, Position=2, HelpMessage='Specify Cache')]
        [ValidateSet('nocache', 'opcache')]
        [string] $Opcache,
        [Parameter(Mandatory = $true, Position=3, HelpMessage='Test type')]
        [ValidateSet('ext', 'php')]
        [string] $TestType
    )
    begin {
    }
    process {
        $ini = Join-Path $BuildDirectory 'phpbin\php.ini'
        $iniTemplate = Join-Path $PSScriptRoot "..\config\ini\$TestType.ini"
        Copy-Item $iniTemplate $ini -Force
        Add-Content $ini "extension_dir=$BuildDirectory\phpbin\ext"

        if ($Opcache -eq "opcache") {
            if ($TestType -eq "php") {
                New-Item "$BuildDirectory/file_cache" -ItemType "directory" -Force > $null 2>&1
            }
            $opcacheIniPath = "$PSScriptRoot\..\config\ini\opcache-$TestType-$Arch.ini"
            $opcacheIni = Get-Content $opcacheIniPath -Raw -ErrorAction Stop
            $opcacheIni = $opcacheIni.Replace("OPCACHE_ERROR_LOG_PATH", "$BuildDirectory\opcache_error.log")
            $opcacheIni = $opcacheIni.Replace("OPCACHE_FILE_CACHE_PATH", "$BuildDirectory\file_cache")
            Add-Content $ini $opcacheIni
        }
    }
    end {
    }
}