Sitwazzjoni attwali: PHP2Shell. Żewġ vulnerabbiltajiet kritiċi ta' PHP (CVSS 9,2) jippermettu kodiċi malizzjuż mingħajr login. Patches mill-21/10/2026.X'għandu jsir issa →

PHP fuq il-linja tal-kmand (CLI)

Is-CLI ta' PHP teżegwixxi skripts mingħajr server tal-web, pereżempju għal cronjobs u manutenzjoni. Taġixxi b'mod differenti mill-verżjoni tal-web u spiss ma turix l-istat li tuża l-websajt tagħkom.

Stat 5 min. qariGħarfien dwar PHP

Fil-qosor: Is-PHP CLI (Command Line Interface) hija l-varjant ta' PHP għal-linja tal-kmand. Teżegwixxi skripts mingħajr server tal-web, pereżempju għal cronjobs, Composer jew kompiti ta' manutenzjoni. Għandha valuri standard proprji, spiss php.ini proprja u kultant saħansitra verżjoni differenti mill-websajt. Għalhekk php -v mhuwiex prova affidabbli li l-websajt hija ppatchjata wara PHP2Shell.

X'inhi l-PHP CLI?

Il-manwal ta' PHP isemmi żewġ oqsma ewlenin ta' użu ta' PHP: skripts għal websajts u skripts fuq il-linja tal-kmand. Għal dan tal-aħħar hemm SAPI proprja bl-isem cli. M'għandhiex bżonn la server tal-web u lanqas browser, biss l-interpretatur ta' PHP. Skont il-manwal hija adatta speċjalment għal kompiti li jaħdmu regolarment permezz ta' Cron taħt Linux jew permezz tal-ippjanar tal-kompiti taħt Windows.

Eżempji tipiċi fil-ħajja ta' kuljum tal-kumpanija: importazzjonijiet bil-lejl fil-ħanut, bagħtiet ta' newsletters, tindif ta' caches, aġġornamenti permezz ta' Composer jew l-għodod tal-linja tal-kmand ta' CMS bħal WP-CLI jew il-konsola ta' Symfony. Taħt Windows il-fajl jissejjaħ php.exe, il-varjant CGI php-cgi.exe.

B'differenza minn PHP-FPM, is-CLI mhijiex servizz. Kull sejħa tibda proċess ġdid, terġa' taqra l-konfigurazzjoni, skont il-manwal, u tintemm meta l-iskrip jispiċċa. Restart wara aġġornament għalhekk mhuwiex meħtieġ. L-eċċezzjonijiet huma proċessi li jaħdmu fit-tul li jinbdew permezz tas-CLI, pereżempju workers tal-queues tal-frameworks jew daemons taħt systemd jew Supervisor. Jaħdmu jiem sħaħ bl-interpretatur mgħobbi darba u jridu jerġgħu jinbdew wara aġġornament ta' PHP eżattament bħal workers tal-web.

Għall-maniġment u għat-tmexxija tal-proġetti dan ifisser: anki kompiti fl-isfond jappartjenu fl-inventarju u f'kull pjan ta' aġġornament.

Kif tiddifferenzja s-CLI mill-verżjoni tal-web?

Is-CLI, skont il-manwal, tissorpassa xi settings b'mod fiss. Ma jistgħux jinbidlu permezz tal-php.ini, biss waqt it-tħaddim b'ini_set():

Direttiva Valur fis-CLI Raġuni skont il-manwal
html_errors mitfi it-tags HTML jiddisturbaw fit-terminal
implicit_flush mixgħul l-output għandu jidher immedjatament
max_execution_time 0 (bla limitu) l-iskripts tal-linja tal-kmand spiss jaħdmu fit-tul
register_argc_argv mixgħul l-iskripts dejjem jirċievu $argc u $argv
output_buffering mitfi fiss, il-funzjonijiet tal-buffer jibqgħu jistgħu jintużaw
max_input_time mitfi is-CLI ma tafx GET, POST jew uploads

Differenza oħra: Is-CLI ma tbiddilx id-direttorju għal dak tal-iskrip. Min isejjaħ php -f ordner/skript.php minn /tmp ikompli jaħdem fi /tmp. Mogħdijiet relattivi f'cronjobs għalhekk huma sors komuni ta' żbalji.

Skrip żgħir li għandu jaħdem biss fuq il-linja tal-kmand:

<?php
if (PHP_SAPI !== 'cli') {
    http_response_code(403);
    exit('Nur für die Kommandozeile.');
}
$tage = (int) ($argv[1] ?? 30);
$grenze = time() - $tage * 86400;
$alt = 0;
foreach (glob(__DIR__ . '/cache/*.tmp') ?: [] as $datei) {
    if (filemtime($datei) < $grenze) { $alt++; }
}
fwrite(STDOUT, "Dateien älter als $tage Tage: $alt\n");

Il-kontroll ta' PHP_SAPI jipprevjeni li skrip ta' manutenzjoni jiġi attivat permezz tal-browser, jekk bi żball jinsab fid-direttorju tal-web. Il-manwal jirrakkomanda espliċitament li l-SAPI tiġi vverifikata hekk minflok ma wieħed joqgħod fuq il-preżenza ta' $argv.

L-għażliet ewlenin tal-PHP CLI

L-għażliet li ġejjin joħorġu mill-ħarsa ġenerali tal-għażliet fil-manwal ta' PHP u huma utli speċjalment għall-amministraturi:

  1. php -v juri n-numru tal-verżjoni tas-CLI.
  2. php --ini juri liema fajls tal-konfigurazzjoni jitgħabbew.
  3. php -m jelenka l-moduli kkompilati u mgħobbija.
  4. php -i isejjaħ phpinfo() u jagħti r-riżultat bħala test.
  5. php -l datei.php jivverifika s-sintassi biss (lint). Minn PHP 8.3 anki għal diversi fajls f'daqqa.
  6. php -r 'code' jesegwixxi kodiċi direttament, mingħajr <?php.
  7. php -d name=wert issettja setting INI għal din is-sejħa.
  8. php -n jinjora l-php.ini kompletament.
  9. php --ri name juri l-konfigurazzjoni ta' estensjoni.
php --ini
php -m | grep -i -E "opcache|sodium|pdo"
php --ri session | grep upload_progress
php -l src/Controller.php src/Model.php

Is-server tal-web integrat: għall-iżvilupp biss

Bi php -S localhost:8000 is-CLI tibda server żgħir tal-web. L-output tal-eżempju fil-manwal isemmi PHP 5.4.0 bħala punt tat-tluq. Il-manwal huwa ċar: is-server iservi għall-iżvilupp, mhuwiex server tal-web sħiħ u m'għandux jaħdem fi netwerks pubbliċi u lanqas fil-produzzjoni. Jekk jaħdem b'mod permanenti fuq server u jintlaħaq minn barra, dan huwa riżultat li għandkom tneħħu.

CLI, Cron u sigurtà wara PHP2Shell

Ir-rapporti magħrufa dwar PHP2Shell isemmu PHP-FPM, mod_php, php-cgi, FrankenPHP u LiteSpeed bħala modalitajiet tat-tħaddim affettwati. Is-CLI ma tipproċessax talbiet mix-xibka. Għas-sigurtà madankollu hija importanti fi tliet aspetti:

Kif jgħin PHP SOS konkretament?

  • Inqabblu l-verżjonijiet: Inqabblu l-istat tas-CLI u tal-web u nippruvaw liema verżjoni twassal tassew il-websajt tagħkom.
  • Nivverifikaw il-cronjobs: Nelenkaw il-kompiti ppjanati kollha ta' PHP tal-utenti kollha u nassenjawhom lill-applikazzjonijiet tagħhom.
  • Nassiguraw il-manutenzjoni: Nneħħu skripts ta' manutenzjoni mid-direttorju tal-web u nissettjaw kontrolli tas-SAPI.
  • Nieħdu ħsieb fit-tul: Fil-kuntratt ta' manutenzjoni tas-sigurtà inżommu s-CLI, is-SAPI tal-web u l-cronjobs aġġornati flimkien.

Mistoqsijiet frekwenti

php -v juri l-verżjoni tal-websajt tiegħi?

Mhux neċessarjament. php -v juri l-verżjoni tal-varjant tal-linja tal-kmand. Il-websajt tista' taħdem permezz ta' verżjoni oħra ta' PHP-FPM jew modulu ta' Apache. Għall-websajt jgħodd l-istat tal-SAPI tal-web, li tiddeterminaw permezz tas-servizz jew ta' fajl ta' verifika għal żmien qasir.

Għaliex l-iskripts tas-CLI jaħdmu għal żmien bla limitu?

Skont il-manwal ta' PHP, is-CLI tissettja max_execution_time b'mod fiss fuq 0, jiġifieri bla limitu, għax l-iskripts fuq il-linja tal-kmand spiss jagħmlu kompiti twal. Id-dewmien jista' jiġi llimitat mill-iskrip innifsu jew minn għodod bħal timeout.

Nista' nuża s-server tal-web integrat php -S fil-produzzjoni?

Le. Il-manwal jiddeskrivih bħala għajnuna għall-iżvilupp, mhux server tal-web sħiħ, u ma jirrakkomandax l-użu f'netwerks pubbliċi u fil-produzzjoni. Għal sistemi live jappartjenu Apache, Nginx jew LiteSpeed bi PHP-FPM quddiemhom.

OPcache huwa attiv fuq il-linja tal-kmand?

B'mod predefinit le. opcache.enable_cli, skont il-manwal, huwa fuq 0. Għal skripts qosra l-cache jgħin ftit xorta waħda, għax kull sejħa hija proċess ġdid.

Sorsi

Kuntatt immedjat

Kull siegħa tgħodd. Iktbu lilna issa.

Iddeskrivu fil-qosor is-sistema, il-verżjoni ta' PHP u dak li osservajtu. Nikkuntattjawkom, niċċaraw is-sitwazzjoni u naħdmu mill-bogħod sakemm l-inċident jingħalaq u jiġi ddokumentat.

Għajnuna immedjata