Windows Server
Tenga en cuenta:
- Esta instrucción asume lo siguiente:
- Ubicación física de Passwork — C:\inetpub\wwwroot\passwork
- Nombre del sitio web de Passwork — Passwork Web Site
- Antes de actualizar, si Passwork está instalado en un entorno en la nube/virtual, cree una instantánea del estado virtual del sistema operativo para restaurar la funcionalidad en caso de una actualización incorrecta
Obtención de la versión actual de Passwork
Cree un directorio temporal para obtener Passwork:
- PowerShell
mkdir "$env:SystemDrive\inetpub\new_version"
Si el servidor con Passwork está ubicado en una red aislada
Debe ir al Portal de clientes de Passwork, copiar el número de certificado y usar la barra de direcciones del navegador para obtener la versión 7 de Passwork:
https://portal.passwork.pro/api/download?apikey=api_key
Vaya al Portal de clientes de Passwork y copie la clave API para obtener la versión actual:

Cree una variable API_KEY con el número de certificado:
- PowerShell
$API_KEY = "your_api_key"
Obtenga la versión 7 de Passwork utilizando la solicitud:
- PowerShell
try {
(New-Object System.Net.WebClient).DownloadFile(
"https://portal.passwork.pro/api/download?apikey=$API_KEY",
"$env:SystemDrive\inetpub\new_version\passwork.zip"
)
Write-Output "Passwork archive successfully obtained"
} catch {
Write-Output "Error obtaining Passwork: $_"
}
Limpie la variable API_KEY con el número de certificado:
- PowerShell
Remove-Variable API_KEY
Actualización a la versión actual
Obtenga la versión actual de Passwork en una variable:
- PowerShell
$version = Get-Content "$env:SystemDrive\inetpub\wwwroot\passwork\version"
Copie los archivos de configuración de Passwork al directorio temporal:
- PowerShell
Copy-Item -Path "$env:SystemDrive\inetpub\wwwroot\passwork\init\config.env" -Destination "$env:SystemDrive\inetpub\new_version\" -Recurse -Force
Copy-Item -Path "$env:SystemDrive\inetpub\wwwroot\passwork\init\encryption_key" -Destination "$env:SystemDrive\inetpub\new_version\" -Recurse -Force
Copy-Item -Path "$env:SystemDrive\inetpub\wwwroot\passwork\.env.local" -Destination "$env:SystemDrive\inetpub\new_version\" -Recurse -Force
Cree un archivo de la versión actual de Passwork para permitir la reversión a la versión anterior:
- PowerShell
Compress-Archive -Path "$env:SystemDrive\inetpub\wwwroot\passwork\*" -DestinationPath "$env:SystemDrive\inetpub\wwwroot\passwork-$version.zip" -Force
Elimine todo el contenido del directorio de Passwork:
- PowerShell
Remove-Item -Path "$env:SystemDrive\inetpub\wwwroot\passwork\*" -Recurse -Force
Extraiga la versión actualizada de Passwork a la ubicación física:
- PowerShell
Expand-Archive -Path "$env:SystemDrive\inetpub\new_version\passwork.zip" -DestinationPath "$env:SystemDrive\inetpub\wwwroot\passwork\"
Mueva los archivos de configuración copiados de Passwork a la nueva versión:
- PowerShell
Copy-Item -Path "$env:SystemDrive\inetpub\new_version\config.env" -Destination "$env:SystemDrive\inetpub\wwwroot\passwork\init\" -Recurse -Force
Copy-Item -Path "$env:SystemDrive\inetpub\new_version\encryption_key" -Destination "$env:SystemDrive\inetpub\wwwroot\passwork\init\" -Recurse -Force
Copy-Item -Path "$env:SystemDrive\inetpub\new_version\.env.local" -Destination "$env:SystemDrive\inetpub\wwwroot\passwork\" -Recurse -Force
Elimine el directorio temporal update_passwork:
- PowerShell
Remove-Item -Path "$env:SystemDrive\inetpub\new_version" -Recurse -Force
Establezca los permisos para la ubicación física de Passwork:
- PowerShell
Invoke-Expression "icacls '$env:SystemDrive\inetpub\wwwroot' /grant 'IIS_IUSRS:(OI)(CI)`M'"
Invoke-Expression "icacls '$env:SystemDrive\inetpub\wwwroot' /grant 'Users:(OI)(CI)`M'"
Invoke-Expression "icacls '$env:SystemDrive\inetpub\wwwroot' /grant 'IUSR:(OI)(CI)`M'"
Descargue las reglas de reescritura web.config y colóquelo en la nueva versión de Passwork — C:\inetpub\wwwroot\passwork\public\web.config
Registro de PHP y habilitación de extensiones
Importe los módulos de IIS y registre la versión de PHP:
- PowerShell
Import-Module IISAdministration
Add-PsSnapin PHPManagerSnapin
New-PHPVersion -ScriptProcessor "$env:ProgramFiles\php8.3\php-cgi.exe" -SiteName "Passwork Web Site" -VirtualPath "/"
Habilite las extensiones de PHP para el sitio web de Passwork:
- PowerShell
$extensions = @(
"php_curl.dll",
"php_gd.dll",
"php_gettext.dll",
"php_intl.dll",
"php_ldap.dll",
"php_mbstring.dll",
"php_mongodb.dll",
"php_mysqli.dll",
"php_openssl.dll",
"php_pdo_pgsql.dll",
"php_pdo_sqlite.dll",
"php_pgsql.dll",
"php_soap.dll",
"php_zip.dll",
"php_fileinfo.dll"
)
foreach ($extension in $extensions) {
Write-Host "PHP extension enabled: $extension"
Set-PHPExtension -Name $extension -Status Enabled -SiteName "Passwork Web Site" -VirtualPath "/"
}
Habilite los métodos PHP adicionales para el sitio web de Passwork:
- PowerShell
$phpVersion=(Get-PHPConfiguration -SiteName "Passwork Web Site" -VirtualPath "/").Version
Set-WebConfigurationProperty -PSPath "IIS:\Sites\Passwork Web Site" -Filter "system.webServer/handlers/add[@name='php-$phpVersion']" -Name "verb" -Value "GET,HEAD,POST,PUT,DELETE,PATCH"
Vaya a la ubicación raíz de Passwork y actualice la versión de Passwork en la base de datos:
- PowerShell
cd "$env:SystemDrive\inetpub\wwwroot\passwork"
php -d "memory_limit=-1" .\bin\console cache:clear
php -d "memory_limit=-1" .\bin\console cache:warmup
php -d "memory_limit=-1" .\bin\console app:update