Microsoft 60 ming ishchisini ixtiyoriy sotib olish taklifini e'lon qildi
Microsoft 60 ming ishchisini ixtiyoriy sotib olish taklifini e'lon qildi. Bu kompaniyaning global ishchi kuchining taxminan chorak qismini tashkil qiladi.

ColdFusion yoki Lucee bilan Windows serverda IIS ishlatayotganlar uchun PHP serverda qanday ishlayotganini va uni qanday xavfsiz o'chirishni bilish muhim. PHP serverda qanday ishlayotganini tekshirish va uni o'chirishning bir nechta usullari mavjud.
2026-yil 21-oktyabrda PHP ikki kritik xatoni tuzatish uchun favqulodda yangilanishlarni chiqardi. Bu xatolar PHP serverlarda kodni ijro etish imkonini berardi. Bu yangilanishlar PHP-FPM, Apache mod_php, php-cgi, FrankenPHP va LiteSpeed uchun ham amal qiladi.
Mening hosting kompaniyam 2026-yil oktyabr oyida web-server xavfsizligi uchun yangi qoidalarni kiritdi. Bu qoidalar IIS serverdagi URL qayta yozish qoidalariga asoslangan va har bir saytga ta'sir ko'rsatdi. Bu qoidalar multipart/form-data turidagi so'rovlarni blokladi, chunki bu turdagi so'rovlar fayl yuklash uchun ishlatiladi.
PHPning o'z maslahati bu xatolarni tuzatish va oldin session.upload_progress.enabled va post_max_size ni o'chirishni tavsiya qiladi. Bu qoidalar PHP serverlarida fayl yuklashni boshqarish uchun mo'ljallangan.
PHP serverda ishlayotganini tekshirish uchun PowerShell foydalanish mumkin. PowerShellni administrator sifatida oching va quyidagi buyruqlarni bajaring:
Import-Module WebAdministration
Import-Module WebAdministration
Get-WebHandler -PSPath 'IIS:\Sites' | Where-Object { $_.path -like '*.php' } | Select-Object name, path, scriptProcessor
Get-WebHandler -PSPath 'IIS:\Sites' | Where-Object { $_.path -like '*.php' } | Select-Object name, path, scriptProcessor
Agar hech narsa chiqmasa, IIS PHPni ishga tushirmaydi. Agar biror narsa chiqsa, PHP ishlayotgani va uni qanday o'chirish kerakligini bilish mumkin.
PowerShellning Get-ChildItem -Recurse buyrug'i ishlatilishi mumkin, ammo u bir necha daqiqaga cho'zilgan bo'lishi mumkin. Windowsning o'z dir buyrug'i tezroq ishlaydi. Quyidagi buyruq web root ostidagi PHP fayllarini sanaydi:
cmd /c "dir C:\inetpub\wwwroot\*.php /s /b" 2>$null | Measure-Object | Select-Object Count
name path scriptProcessor
---- ---- ---------------
FastCGI *.php C:\php\php-cgi.exe
Agar sanovchi nol bo'lmasa, quyidagi buyruq PHP fayllarini topadi:
cmd /c "dir C:\inetpub\wwwroot\*.php /s /b" 2>$null | ForEach-Object { Split-Path $_ -Parent } | Group-Object | Sort-Object Count -Descending | Select-Object -First 25 Count, Name | Format-Table -AutoSize
Agar tanish bo'lmagan PHP fayllar topilsa, bu xavfsizlik buzilishi bo'lishi mumkin. Quyidagi buyruq eng so'nggi o'zgarishlarni ko'rsatadi:
cmd /c "dir C:\inetpub\wwwroot\*.php /s /b" 2>$null | Get-Item | Sort-Object LastWriteTime -Descending | Select-Object -First 15 LastWriteTime, Length, FullName | Format-Table -AutoSize
cmd /c "dir C:\inetpub\wwwroot\*.php /s /b" 2>$null | Measure-Object | Select-Object Count
PHP o'rnatilgan yoki ishlayotganini tekshirish uchun quyidagi buyruqlarni bajaring:
Get-Process php* -ErrorAction SilentlyContinue | Select-Object Name, Id, StartTime
Test-Path C:\php
php-cgi.exe jarayoni bo'lmasa, bu PHP so'rovlar uchun talab qilinmaganini anglatadi. IIS talab bo'lganda PHPni ishga tushiradi.
cmd /c "dir C:\inetpub\wwwroot\*.php /s /b" 2>$null | ForEach-Object { Split-Path $_ -Parent } | Group-Object | Sort-Object Count -Descending | Select-Object -First 25 Count, Name | Format-Table -AutoSize
Har qanday kompyuterdan o'z saytingizdagi odatiy manzillarni sinab ko'ring:
foreach ($path in "phpmyadmin/", "phpMyAdmin/", "pma/", "info.php") { $url = "https://www.mysite.com/$path" try { $r = Invoke-WebRequest $url -UseBasicParsing -TimeoutSec 15; "$($r.StatusCode) $url" } catch { "$($_.Exception.Response.StatusCode.value__) $url" } }
200 javobi bo'lgan har bir narsa tekshirilishi kerak. Internetga ochiq phpMyAdmin kirish sahifasi bots uchun doimiy taklifdir.
Quyidagi qadamlarni tartib bilan bajaring va oldin saqlang. Har bir qadam qaytarilishi mumkin.
cmd /c "dir C:\inetpub\wwwroot\*.php /s /b" 2>$null | Get-Item | Sort-Object LastWriteTime -Descending | Select-Object -First 15 LastWriteTime, Length, FullName | Format-Table -AutoSize
1. IIS konfiguratsiyasini saqlang
IIS o'z konfiguratsiyasini bir buyruq bilan saqlay oladi va qayta tiklay oladi:
& "$env:windir\System32\inetsrv\appcmd.exe" add backup "before-php-removal"
Barcha qadamlarni qaytarish uchun: appcmd.exe restore backup "before-php-removal"
Get-Process php* -ErrorAction SilentlyContinue | Select-Object Name, Id, StartTime
Test-Path C:\php
2. phpMyAdmin (va boshqa PHP ilovalari)ni web papkalaridan ko'chiring
phpMyAdmin va boshqa PHP ilovalarini web papkalaridan ko'chiring, lekin o'chirmang.
3. PHP handler mappingni o'chiring
PowerShellni administrator sifatida oching va quyidagi buyruqlarni bajaring:
foreach ($path in "phpmyadmin/", "phpMyAdmin/", "pma/", "info.php") {
$url = "https://www.mysite.com/$path"
try { $r = Invoke-WebRequest $url -UseBasicParsing -TimeoutSec 15; "$($r.StatusCode) $url" }
catch { "$($_.Exception.Response.StatusCode.value__) $url" }
}
Remove-WebHandler -Name FastCGI -PSPath 'IIS:\Sites\Default Web Site'
4. PHPni o'chiring
PHPni o'chirish uchun quyidagi buyruqlarni bajaring:
Remove-Item -Path C:\php -Recurse -Force
5. IIS konfiguratsiyasini qayta tiklang
Agar biron bir narsa noto'g'ri bo'lsa, IIS konfiguratsiyasini qayta tiklang:
appcmd.exe restore backup "before-php-removal"
Asl manba: gregoryalexander.com