# phpinfo() faili: kāpēc tiem jāpazūd

> Aizmirsts phpinfo fails izpauž ceļus, moduļus un reizēm piekļuves datus. Kā atrast šādus failus, tos noņemt un PHP stāvokli pārbaudīt drošāk.

Avots: https://phpsos.de/lv/blog/phpinfo-dateien-entfernen/  
Aktuāls uz: 25.10.2026  
Pakalpojuma sniedzējs: PHP SOS, PHP ārkārtas palīdzība un serveru drošība. Tūlītēja palīdzība pa WhatsApp: https://wa.me/491736494914?text=Sveiki%2C%20PHP%20SOS%2C%20mums%20nepiecie%C5%A1ama%20pal%C4%ABdz%C4%ABba%20ar%20m%C5%ABsu%20PHP%20serveri.%20Uz%C5%86%C4%93mums%3A%20%E2%80%A6%20Vietne%3A%20%E2%80%A6

**Īsi sakot:** Fails, kas izsauc tikai `phpinfo()`, ikvienam apmeklētājam parāda PHP versiju, moduļus, ceļus un iestatījumus, bieži arī vides mainīgos ar piekļuves datiem. phpinfo drošībai tāpēc ir spēkā: šādus failus nekad nepalikt tīmekļa saknē uz ilgu laiku, pēc lietošanas dzēst un PHP stāvokli labāk pārbaudīt ar pakotņu pārvaldību un konfigurāciju. Ielāpa stāvokli pret PHP2Shell phpinfo izvade tāpat nepierāda.

## Testa fails, kas paliek

Kopš 2026. gada 21. oktobra tūkstošiem administratoru pārbauda, kādu PHP versiju piegādā viņu vietnes. Ātrākais ceļš ir zināms: izveidot failu `info.php` ar vienu rindiņu, atvērt pārlūkā, nolasīt rezultātu. Tas darbojas. Problēma sākas pēc tam, kad fails tiek aizmirsts.

Šādi faili pārsteidzoši ilgi saglabājas. Tie pārceļas līdzi, nonāk rezerves kopijās un pēc gadiem parādās direktorijās, ko neviens vairs nepazīst. Automatizēti skeneri pastāvīgi vaicā tipiskus failu nosaukumus. Kas administratoram bija palīglīdzeklis, uzbrucējam ir servera būvēšanas instrukcija.

Īpaši skartas ir aģentūras un hostinga sniedzēji ar daudzām klientu vietnēm. Kas steidzīgā nedēļā pārbauda desmitiem vietņu, tas ātri izveido desmitiem testa failu. Pietiek ar vienu aizmirstu mapi, lai fails pēc mēnešiem vēl būtu atverams.

## Ko phpinfo() izpauž un kāpēc tas drošībai ir svarīgi

Saskaņā ar PHP rokasgrāmatu `phpinfo()` izvada pašreizējo PHP stāvokli. Ar konstantēm var noteikt, kuras daļas parādās; bez norādes tas ir viss.

| Joma (konstante) | Saturs saskaņā ar rokasgrāmatu | Kāpēc delikāts |
|---|---|---|
| `INFO_GENERAL` | būvējums, php.ini atrašanās vieta, tīmekļa serveris, sistēma | izpauž operētājsistēmu un ceļus |
| `INFO_CONFIGURATION` | lokālās un galvenās visu direktīvu vērtības | parāda, vai `disable_functions` vai `open_basedir` darbojas |
| `INFO_MODULES` | ielādētie paplašinājumi ar iestatījumiem | uzbrucēji redz, kuras funkcijas ir pieejamas |
| `INFO_ENVIRONMENT` | vides mainīgie | te bieži ir datubāzes vai API piekļuves dati |
| `INFO_VARIABLES` | iepriekš definētie mainīgie (Environment, GET, POST, Cookie, Server) | satur pašreizējā pieprasījuma galvenes un sīkdatnes |

Visbīstamākās ir pēdējās divas rindas. Modernas lietojumprogrammas piekļuves datus labprāt ielādē no vides mainīgajiem, piemēram, no `.env` faila vai konteinera konfigurācijas. Šīs vērtības tad izvadē ir atklātā tekstā. Kā šādus noslēpumus principā aizsargāt, apraksta raksts [Piekļuves datu un .env failu pareiza aizsardzība](https://phpsos.de/lv/blog/env-dateien-schuetzen/).

Klāt nāk: izvade rāda pašreizējā pieprasījuma vērtības, tātad arī sīkdatnes un galvenes. Ja uzbrucējs var novirzīt apmeklētāju uz lapu un nolasīt atbildi, piemēram, caur Cross-Site Scripting ievainojamību citur, kļūst redzamas pat ar HttpOnly atzīmētas sīkdatnes.

## Kāpēc phpinfo nav pierādījums pret PHP2Shell

Daudzi failu izveidoja tieši, lai pārbaudītu ielāpa stāvokli. Tieši tam tas der tikai ierobežoti. Distributīvi un hostinga sniedzēji labojumus bieži ievieš kā backport; saskaņā ar ziņojumiem, piemēram, Ubuntu 24.04 pēc atjauninājuma joprojām rāda 8.3.6. Parādītais numurs tātad maz pasaka. Un otrādi, aktuāls numurs nepierāda, ka visi darbprocesi ir pārstartēti.

Noturīgs ir pakotnes stāvoklis ar CVE numuriem changelog, papildināts ar visu PHP procesu pārstartēšanu. Kā tas notiek, skaidro raksts [PHP versijas un ielāpa stāvokļa pareiza pārbaude](https://phpsos.de/lv/php2shell/php-version-pruefen/).

Īslaicīgai izvadei tīmekļa kontekstā tomēr ir sava vieta: tā parāda, kurš php.ini un kuras vērtības vietnei tiešām ir spēkā, jo komandrinda bieži nolasa citu konfigurāciju. Fonu par līmeņiem un prioritāti skaidro [php.ini skaidrojums](https://phpsos.de/lv/php/php-ini-erklaert/). Ja tas jums vajadzīgs, tad ar piekļuves aizsardzību, ar nejaušu faila nosaukumu un tikai uz minūtēm.

Lielākajai daļai jautājumu tāpat ir labāki ceļi. FPM pūla PHP versija ir tā konfigurācijā un procesu sarakstā. Atsevišķas vērtības var vaicāt ar skriptu ārpus tīmekļa saknes ar `ini_get()`, neatklājot visu. Un hostinga paneļos saskarne parāda katrai vietnei piešķirto versiju, kaut arī bez norādes par backport.

## Aizmirstu failu atrašana: konkrēti pārbaudes soļi

Šādi Linux serverī uzmeklējat mantojumu. Komandas tikai lasa un neko nemaina.

1. **Meklēt failus ar phpinfo izsaukumu** (pielāgot ceļu):

```bash
grep -rlE "phpinfo[[:space:]]*\(" /var/www --include="*.php" 2>/dev/null
```

2. **Pārbaudīt tipiskus failu nosaukumus**, arī bez trāpījuma saturā:

```bash
find /var/www -type f \( -iname "info.php" -o -iname "phpinfo.php" -o -iname "test.php" -o -iname "i.php" \) 2>/dev/null
```

3. **Novērtēt trāpījumus:** ne katrs atradums ir testa fails. Administratora rīki, paneļi vai ietvari `phpinfo()` var izmantot aiz pieteikšanās. Izšķiroši ir tas, vai fails ir sasniedzams no interneta bez pieteikšanās.

4. **Piekļuves žurnālā apskatīt**, pirms dzēšat:

```bash
grep -E "GET /(info|phpinfo|test|i)\.php" /var/log/nginx/access.log* 2>/dev/null | tail -n 50
```

5. **Dzēst un nomainīt noslēpumus:** ja izvadē bija parole vai atslēga un fails bija publisks, vērtība skaitās zināma. Nomainiet to.

> **Padoms:**
> Atradums ar nezināmu izveides datumu un aizdomīgu saturu blakus phpinfo izsaukumam var būt arī slēpta piekļuve. Tad ne tikai dzēst, bet nodrošināt un likt pārbaudīt, skatiet [Webshell atpazīšana un noņemšana](https://phpsos.de/lv/ratgeber/webshell-erkennen/).

## Ilgtermiņā novērst, nevis sakopt

Trīs pasākumi nodrošina, ka tēma neatgriežas. Pirmkārt: `phpinfo` iekļaut `disable_functions` sarakstā tīmekļa konteksta php.ini. Iepriekš pārbaudiet, vai jūsu panelis funkciju nevajag statusa lapai. Kā iestatījums darbojas un kur ir tā robežas, rakstīts sadaļā [disable_functions pareiza lietošana](https://phpsos.de/lv/ratgeber/disable-functions/).

```ini
; php.ini FPM vai Apache, pēc tam pārstartēt visus PHP procesus
disable_functions = phpinfo
expose_php = Off
```

Otrkārt: nodrošināšana tikai ar fiksētu procesu, piemēram, ar Git vai būvēšanas pipeline, lai atsevišķi faili ar roku nenonāktu tīmekļa saknē. Treškārt: statusa informācija pieder monitoringam vai inventāram, nevis publiskai lapai.

`expose_php = Off` papildus noņem galveni, ar kuru PHP katrā atbildē paziņo savu versiju. Tas atjauninājumu neaizstāj, bet atņem automatizētiem skeneriem ērtu informāciju. Kam serverim piekļūst vairākas personas, tam turklāt jāvienojas par vienkāršu noteikumu: testa faili tiek dzēsti tajā pašā darba solī, kurā izveidoti, nevis „vēlāk".

## Kā PHP SOS palīdz konkrēti?

- Mēs pārmeklējam jūsu tīmekļa saknes uz phpinfo failiem, testa skriptiem un citu mantojumu un novērtējam katru atradumu.
- Mēs izvērtējam piekļuves atrastajiem failiem un sakām, kurus noslēpumus jums vajadzētu nomainīt.
- Mēs ielāpa stāvokli pret PHP2Shell pierādām ar pakotnes changelog un procesa startu, nevis ar versijas rādījumu.
- Mēs pastāvīgi ieviešam `disable_functions`, `expose_php` un citas nostiprināšanas [servera nostiprināšanas](https://phpsos.de/lv/leistungen/server-haertung/) ietvaros.

**Secinājums:** phpinfo fails tiek izveidots sekundēs un tikpat ātri aizmirsts. Kas to tagad meklē un noņem, aizver nevajadzīgu datu noplūdi un ielāpa stāvoklī paļaujas uz noturīgiem pierādījumiem.


## Biežāk uzdotie jautājumi

**Vai phpinfo fails pats par sevi ir drošības nepilnība?**  
Tas neatver piekļuvi, bet dod uzbrucējiem detalizētu servera aprakstu: versiju, moduļus, ceļus, iestatījumus un atkarībā no vides arī vides mainīgos. Tas atvieglo mērķtiecīgus uzbrukumus un var atklāt piekļuves datus.

**Vai versijas numurs phpinfo pierāda, ka PHP2Shell ir ielāpots?**  
Nē. Distributīvi un hostinga sniedzēji labojumus bieži ievieš kā backport, un parādītais numurs tad paliek tāds pats. Ielāpa stāvokli pierāda pakotnes changelog un sniedzēja apstiprinājums, kā arī visu PHP procesu pārstartēšana.

**Ko darīt, ja phpinfo fails kādu laiku bija publisks?**  
Izdzēst failu, piekļuves žurnālā apskatīt, kas to ir atvēris, un nomainīt visus noslēpumus, kas bija izvadē, piemēram, datubāzu paroles vai API atslēgas no vides mainīgajiem.

**Vai phpinfo() var pilnībā izslēgt?**  
Jā, ar disable_functions tīmekļa konteksta php.ini. Iepriekš pārbaudiet, vai panelis vai lietojumprogramma funkciju neizmanto statusa lapām, un pēc tam pārstartējiet PHP procesus.

## Avoti

- [PHP rokasgrāmata: phpinfo()](https://www.php.net/manual/de/function.phpinfo.php)
- [OWASP Top 10](https://owasp.org/www-project-top-ten/)
- [php.net: drošības paziņojumi](https://www.php.net/)
