Aktuális helyzet: PHP2Shell. Két kritikus PHP-rés (CVSS 9,2) lehetővé teszi kártékony kód futtatását bejelentkezés nélkül. Javítások 2026. 10. 21. óta.Mi a teendő most →

A php.ini elmagyarázva: felépítés, szintek és elsőbbség

Hol találja a PHP a beállításait, milyen sorrendben érvényesülnek, és ki írhatja felül őket. Minden megerősítés és a PHP2Shell átmeneti intézkedéseinek alapja.

Állapot 5 perc olvasási időPHP-tudástár

Röviden: A php.ini a PHP központi konfigurációs fájlja. A PHP induláskor olvassa be, szervermodulok esetén egyszer, CGI és CLI esetén minden híváskor. Ehhez jönnek egy szkennelt könyvtár kiegészítő fájljai, az FPM-poolban vagy az Apache-ban megadott beállítások, a .htaccess, illetve a .user.ini, valamint az ini_set() a kódban. Hogy melyik szint módosíthat egy értéket, azt a módosítási módja szabja meg, például INI_SYSTEM vagy INI_PERDIR. A php_admin_value útján megadott értékeket az alkalmazás már nem írhatja felül.

Mi a php.ini?

A php.ini egy szövegfájl name = wert mintájú bejegyzésekkel. Meghatározza, hogyan viselkedik a PHP: mennyi memóriát használhat egy szkript, megjelennek-e a hibák a böngészőben, hogyan működnek a munkamenetek, és mely bővítmények töltődnek be. A megjegyzések pontosvesszővel kezdődnek.

A PHP-kézikönyv szerint a fájlt a PHP induláskor olvassa be. Szervermodulok, például a mod_php esetén ez csak egyszer történik, a webszerver indításakor, CGI és CLI esetén minden híváskor. A PHP-FPM a konfigurációját induláskor és a szolgáltatás újratöltésekor olvassa be. Az újraindítás vagy reload nélküli módosítás ezért többnyire nem hat.

A PHP 8.3 óta a kézikönyv szerint egy bejegyzés hivatkozhat egy tartalékértékkel rendelkező környezeti változóra:

memory_limit = ${PHP_MEMORY_LIMIT}
max_execution_time = ${PHP_MAX_EXECUTION_TIME:-30}

Hol keresi a PHP a php.ini-t?

A kézikönyv rögzített sorrendet ír le. Először egy kifejezetten megadott útvonal érvényes, például az Apache PHPIniDir beállítása vagy a -c kapcsoló CGI és CLI esetén. Egyébként a PHP keresési útvonalat épít a következőkből:

  1. a PHPRC környezeti változó,
  2. Windows alatt az IniFilePath rendszerleíró-bejegyzés,
  3. az aktuális munkakönyvtár, kivéve azoknál a SAPI-knál, amelyek ezt kikapcsolják, például a CLI,
  4. a PHP-bináris fájl, illetve a modul könyvtára,
  5. a fordításkor megadott --with-config-file-path útvonal.

Ebben a keresési útvonalban a PHP először egy php-SAPI.ini fájlt keres, például php-cli.ini-t, és csak utána a php.ini-t. Ezután a PHP betűrendben beolvassa az összes .ini fájlt a szkennelt könyvtárból, amelyet a PHP_INI_SCAN_DIR vagy fordításkor a --with-config-file-scan-dir határoz meg. Hogy mely fájlok töltődtek be, azt a php --ini vagy a php_ini_scanned_files() függvény mutatja.

php --ini
php -r 'var_dump(php_ini_loaded_file(), php_ini_scanned_files());'

Mindkét parancs a parancssor állapotát mutatja. A weboldalra másik fájl érvényes lehet, mert minden SAPI-nak lehet saját konfigurációja; erről bővebben A SAPI elmagyarázva oldalon.

Módosítási módok: ki melyik értéket állíthatja be?

Nem minden beállítás adható meg mindenhol. A kézikönyv minden direktívához módosítási módot rendel:

Mód Hol adható meg az érték
INI_USER szkriptekben az ini_set() útján, a Windows rendszerleíró adatbázisban és a .user.ini-ben
INI_PERDIR a php.ini-ben, a .htaccess-ben, a httpd.conf-ban vagy a .user.ini-ben
INI_SYSTEM csak a php.ini-ben vagy a httpd.conf-ban
INI_ALL bárhol

Példák a kézikönyvből: a memory_limit módja INI_ALL, alapértéke 128M, a post_max_size módja INI_PERDIR, alapértéke 8M, az upload_max_filesize módja INI_PERDIR, alapértéke 2M. Az expose_php csak a php.ini-ben szerepelhet.

A .user.ini fájlokat a kézikönyv szerint csak a CGI és a FastCGI SAPI-k olvassák, tehát a PHP-FPM is. A PHP a szkript könyvtárától felfelé keresi őket a Document Rootig, és alapértelmezetten legfeljebb 300 másodpercenként olvassa be újra (user_ini.cache_ttl). mod_php alatt ezt a szerepet a .htaccess veszi át.

Melyik érték érvényes végül? A szintek elsőbbsége

Leegyszerűsítve: minél később lép működésbe egy szint, annál inkább az ő értéke érvényesül, amennyiben a módosítási mód ezt megengedi.

  1. Az adott SAPI php.ini-je
  2. A szkennelt könyvtár kiegészítő fájljai, betűrendben
  3. Szerverkonfiguráció: FPM-pool php_value, illetve php_admin_value beállítással, Apache VirtualHost
  4. Könyvtárszint: .htaccess mod_php esetén, .user.ini FPM és CGI esetén
  5. Futásidő: ini_set() az alkalmazáskódban

A kivétel döntő: a php_admin_value vagy php_admin_flag útján megadott értékeket a kézikönyv szerint nem lehet az ini_set() segítségével felülírni. Az adminisztrátorok így zárolják a biztonság szempontjából fontos beállításokat az alkalmazással szemben. Részletesen leírja a php_admin_value: beállítások zárolása a felülírás ellen cikk.

A php.ini a PHP2Shell után: mi változott

A php.net PHP2Shellre vonatkozó átmeneti intézkedései szinte mind INI-beállítások: a memory_limit=-1 zárolva a felülírás ellen, korlátozott post_max_size, session.upload_progress.enabled=0, és PHP 8.5-ön fatal_error_backtraces=0. A php.net hangsúlyozza, hogy a session.upload_progress.enabled értéket nem az ini_set() vagy a .user.ini útján kell megadni, hanem a php.ini-ben, az FPM-poolban vagy a szerverkonfigurációban, majd az összes worker újraindításával. A teljes lista a Sürgősségi intézkedések, ha még nem tud javítani oldalon található.

A javított 8.5.12, 8.4.27, 8.3.36 és 8.2.35 verziókkal a kézikönyv szerint a memory_limit is megváltozott: mostantól lágy korlát. Az új memory_hard_limit_percent beállítás kemény korlátot szab. Saját érték nélkül ez a memory_limit kétszerese, 1G felett az érték plusz 1G. Ha túllépik, a folyamat azonnal 137-es kilépési állapottal ér véget. Hogyan válassza meg ésszerűen mindkét korlátot, azt a A memory_limit helyes beállítása cikk magyarázza.

Tipp

A kézikönyv szerint: ha egy PHP-verzió nem ismeri a memory_hard_limit_percent beállítást, érintett a CVE-2026-109618 és a CVE-2026-109619 résekben. Backportokat használó disztribúcióknál emellett a csomag változásnaplója (changelog) igazolja az állapotot.

Hogyan segít konkrétan a PHP SOS?

  • Érvényes értékek megállapítása: Minden SAPI-ra kiolvassuk, mely fájlok töltődnek be, és melyik érték érvényes végül.
  • Szintek rendbetétele: Eltávolítjuk az ellentmondásos bejegyzéseket a panelekből, poolokból, a .htaccess-ből és a .user.ini-ből.
  • Zárolások beállítása: A szerver-megerősítés keretében a biztonság szempontjából fontos értékeket php_admin_value útján rögzítjük.
  • Igazolás: Dokumentáljuk a beállításokat és az újraindítást, hogy az állapot később bizonyítható legyen.

Gyakori kérdések

Hol található a php.ini?

Ez az operációs rendszertől, a csomagtól és a SAPI-tól függ. Debianon és Ubuntun verziónként és SAPI-nként külön könyvtárak vannak, például /etc/php/8.3/fpm/php.ini és /etc/php/8.3/cli/php.ini. A parancssorban a php --ini megmutatja a betöltött fájlokat, a weboldalhoz a php_ini_loaded_file() segít egy rövid időre elhelyezett ellenőrző fájlban.

Milyen sorrendben olvasódnak be a conf.d könyvtár fájljai?

A PHP-kézikönyv szerint a PHP a szkennelt könyvtár összes .ini kiterjesztésű fájlját betűrendben olvassa be. A későbbi fájlok felülírják a korábbiak értékeit. Ezért viselnek sok fájlnevet olyan számok, mint a 20- vagy a 99-.

Miért nem hat a php.ini-ben végzett módosításom?

Gyakori okok: egy másik SAPI fájlját módosították, a szolgáltatást nem indították újra, egy érték az FPM-poolban, az Apache-konfigurációban vagy egy .user.ini-ben felülírja, vagy egy tárhelyvezérlő panel a következő mentéskor újraírja a fájlt.

Mi a memory_hard_limit_percent?

Egy új beállítás, amelyet a PHP-kézikönyv szerint a 2026. 10. 21-i biztonsági kiadásokkal vezettek be. A memory_limit százalékaként kemény memóriakorlátot határoz meg. A kézikönyv felhívja a figyelmet arra, hogy az a PHP-verzió, amely nem ismeri ezt a beállítást, érintett a PHP2Shell-résekben.

Források

Azonnali kapcsolat

Minden óra számít. Írjon nekünk most.

Ismertesse röviden a rendszert, a PHP-verziót és a megfigyelését. Jelentkezünk, tisztázzuk a helyzetet, és távolról dolgozunk, amíg az incidens le nem zárul és dokumentálva nem lesz.

Azonnali segítség