Configurarea fișierului php.ini: Un ghid complet pentru optimizarea PHP pe serverul dvs.
Fișierul php.ini este fișierul de configurare master pentru PHP — coloana vertebrală a aproape fiecărei aplicații web moderne. Indiferent dacă rulezi WordPress, Laravel, Magento sau o aplicație personalizată, înțelegerea modului de configurare corect a php.ini poate îmbunătăți dramatic performanța serverului tău, poate întări securitatea și poate asigura compatibilitate fără probleme cu stiva ta de software.
Acest ghid cuprinzător te ghidează prin tot ceea ce trebuie să știi: ce face php.ini, cum să-l găsești, cum să-l editezi în siguranță și cum să verifici că modificările tale funcționează corect.
1. Ce este php.ini și de ce este important?
Fișierul php.ini este un fișier de configurare în text simplu pe care PHP îl citește de fiecare dată când se inițializează. Conține sute de directive — perechi cheie-valoare care controlează practic fiecare aspect al comportamentului runtime al PHP, inclusiv:
- Alocarea memoriei pentru scripturi
- Limitele de încărcare a fișierelor și dimensiunile datelor POST
- Nivelurile de raportare a erorilor și logging
- Setările de gestionare a sesiunilor
- Încărcarea extensiilor (de ex., PDO, cURL, OPcache)
- Restricții de securitate cum ar fi
disable_functionsșiopen_basedir - Limitele de timp de execuție pentru a preveni scripturile care se execută necontrolat
Configurarea corectă a acestor setări nu este doar o chestiune de comoditate — aceasta afectează direct stabilitatea aplicației dvs., poziția de securitate și experiența utilizatorului final. Setările PHP configurate incorect sunt o cauză principală a erorilor de aplicație, încărcărilor de fișiere eșuate, blocări din cauza epuizării memoriei și vulnerabilități de securitate exploatabile.
Dacă vă găzduiți aplicațiile PHP pe un plan de VPS Hosting, aveți acces complet de root pentru a modifica php.ini liber — oferindu-vă control complet asupra mediului PHP.
2. Locarea fișierului php.ini
Locația php.ini variază în funcție de sistemul dvs. de operare, versiunea PHP și Server API (SAPI) utilizat (Apache mod_php, PHP-FPM sau CLI). Iată trei metode fiabile pentru a-l găsi.
Metoda 1: Utilizarea liniei de comandă (Metoda cea mai rapidă)
Deschideți terminalul sau conectați-vă prin SSH și rulați:
php --iniExemplu de ieșire:
Configuration File (php.ini) Path: /etc/php/8.2/cli
Loaded Configuration File: /etc/php/8.2/cli/php.ini
Scan for additional .ini files in: /etc/php/8.2/cli/conf.d
Additional .ini files parsed: /etc/php/8.2/cli/conf.d/10-opcache.ini, ...> Important: PHP adesea are fișiere php.ini separate pentru diferiți SAPI. Versiunea CLI (/etc/php/8.2/cli/php.ini) este utilizată atunci când rulați PHP din linia de comandă, în timp ce versiunea Apache sau PHP-FPM (/etc/php/8.2/apache2/php.ini sau /etc/php/8.2/fpm/php.ini) este utilizată pentru cererile web. Editați întotdeauna pe cea corectă pentru cazul dvs. de utilizare.
Metoda 2: Utilizarea phpinfo() într-un browser
Această metodă relevă exact care fișier php.ini încarcă serverul web — care poate diferi de versiunea CLI.
Pasul 1: Creați un nou fișier în directorul rădăcină web:
sudo nano /var/www/html/info.phpPasul 2: Adăugați următorul conținut:
<?php
phpinfo();
?>Pasul 3: Salvați fișierul, apoi deschideți browserul și navigați la:
http://yourdomain.com/info.phpPasul 4: Căutați rândul “Loaded Configuration File” aproape de partea de sus a ieșirii. Acesta va afișa calea completă către fișierul php.ini activ.
> ⚠️ Avertisment de securitate: Ștergeți info.php imediat după utilizare. Acest fișier expune detalii sensibile de configurare a serverului pe care atacatorii le pot exploata.
sudo rm /var/www/html/info.phpMetoda 3: Utilizarea php -r (One-Liner rapid)
php -r "echo php_ini_loaded_file();"Aceasta afișează calea fișierului php.ini încărcat direct în terminal — nu este necesară crearea de fișiere.
Locații comune php.ini după platformă
| Platformă / Configurare | Cale tipică php.ini |
|---|---|
| Ubuntu/Debian + Apache (PHP 8.2) | /etc/php/8.2/apache2/php.ini |
| Ubuntu/Debian + PHP-FPM (PHP 8.2) | /etc/php/8.2/fpm/php.ini |
| Ubuntu/Debian + CLI (PHP 8.2) | /etc/php/8.2/cli/php.ini |
| CentOS/RHEL + Apache | /etc/php.ini |
| cPanel/WHM | /usr/local/lib/php.ini |
| Windows (XAMPP) | C:xamppphpphp.ini |
| macOS (Homebrew PHP 8.2) | /opt/homebrew/etc/php/8.2/php.ini |
3. Editarea Fișierului php.ini
Pasul 1: Creați o Copie de Siguranță Mai Întâi
Înainte de a face orice modificări, creați întotdeauna o copie de siguranță:
sudo cp /etc/php/8.2/apache2/php.ini /etc/php/8.2/apache2/php.ini.bakAceasta vă permite să restaurați rapid configurația originală dacă ceva merge greșit.
Pasul 2: Deschideți Fișierul într-un Editor de Text
Utilizați nano pentru o experiență prietenoasă pentru începători:
sudo nano /etc/php/8.2/apache2/php.iniSau utilizați vim pentru editare mai avansată:
sudo vim /etc/php/8.2/apache2/php.iniPasul 3: Navigați și Editați Directivele
Fișierul php.ini este mare (adesea 1.500+ linii). Utilizați funcția de căutare a editorului pentru a sări la directivele specifice:
- În
nano: ApăsațiCTRL + W, apoi tastați numele directivei (de exemplu,memory_limit) - În
vim: Apăsați/, apoi tastați numele directivei
Pasul 4: Salvați și Ieșiți
- nano: Apăsați
CTRL + X, apoiY, apoiEnter - vim: Apăsați
ESC, tastați:wq, apoi apăsațiEnter
4. Directivele php.ini cheie explicate
Iată o detaliere cuprinzătoare a celor mai importante directivele php.ini pe care ar trebui să le cunoașteți și să le configurați:
Limite de memorie și resurse
; Maximum memory a single PHP script can allocate
memory_limit = 256M
; Maximum time (in seconds) a script is allowed to run
max_execution_time = 60
; Maximum time PHP will spend parsing request data
max_input_time = 120
; Maximum number of input variables (important for complex forms)
max_input_vars = 3000Setări pentru încărcarea fișierelor
; Whether file uploads are permitted
file_uploads = On
; Maximum size of an individual uploaded file
upload_max_filesize = 64M
; Maximum size of all POST data (must be >= upload_max_filesize)
post_max_size = 64M
; Maximum number of files that can be uploaded simultaneously
max_file_uploads = 20> Regulă de bază: post_max_size trebuie să fie întotdeauna egal cu sau mai mare decât upload_max_filesize. Dacă post_max_size este mai mic, încărcările vor eșua în tăcere.
Raportarea erorilor și înregistrarea
; ---- DEVELOPMENT ENVIRONMENT ----
; Show all errors on screen (never use in production)
error_reporting = E_ALL
display_errors = On
display_startup_errors = On
; ---- PRODUCTION ENVIRONMENT ----
; Log errors to a file, never display them to users
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
display_errors = Off
display_startup_errors = Off
log_errors = On
error_log = /var/log/php/error.logGestionarea sesiunilor
; Where session data is stored on the server
session.save_path = "/var/lib/php/sessions"
; Session cookie lifetime in seconds (0 = until browser closes)
session.cookie_lifetime = 0
; Prevent JavaScript from accessing session cookies (XSS protection)
session.cookie_httponly = On
; Only send session cookies over HTTPS
session.cookie_secure = On
; Strict session ID mode (prevents session fixation attacks)
session.use_strict_mode = OnOPcache (Accelerator de performanță)
OPcache îmbunătățește dramatic performanța PHP prin stocarea bytecode-ului scriptului precompilat în memoria partajată:
opcache.enable = 1
opcache.memory_consumption = 128
opcache.interned_strings_buffer = 8
opcache.max_accelerated_files = 10000
opcache.revalidate_freq = 60
opcache.fast_shutdown = 15. Repornirea serverului web
Modificările la php.ini nu intră în vigoare până când nu reporniți serviciul relevant. Utilizați comanda corespunzătoare pentru configurația dvs.:
Apache (mod_php)
sudo systemctl restart apache2
# or on CentOS/RHEL:
sudo systemctl restart httpdNginx + PHP-FPM
# Restart PHP-FPM (replace 8.2 with your PHP version)
sudo systemctl restart php8.2-fpm
# Restart Nginx
sudo systemctl restart nginxReîncărcare gratuită (fără timp de inactivitate)
Pentru serverele de producție, utilizați o reîncărcare gratuită pentru a evita deconectarea conexiunilor active:
# Apache graceful reload
sudo systemctl reload apache2
# PHP-FPM graceful reload
sudo systemctl reload php8.2-fpmVerificați dacă serviciile sunt în funcțiune
sudo systemctl status apache2
sudo systemctl status php8.2-fpm6. Verificarea Modificărilor
După repornirea serverului, confirmați că noile setări sunt active folosind una dintre aceste metode:
Method 1: Command Line Grep
# Check memory_limit
php -i | grep memory_limit
# Check upload_max_filesize
php -i | grep upload_max_filesize
# Check multiple values at once
php -i | grep -E 'memory_limit|upload_max_filesize|post_max_size|max_execution_time'Method 2: phpinfo() Page
Recreați fișierul info.php temporar (nu uitați să-l ștergeți după) și căutați directivele modificate. Valorile schimbate vor apărea în coloanele "Local Value" și "Master Value".
Method 3: PHP One-Liner
php -r "echo ini_get('memory_limit');"7. Sfaturi avansate de optimizare php.ini
Utilizarea .htaccess pentru a suprascrie php.ini (doar Apache)
Dacă sunteți pe hosting partajat sau nu aveți acces root, puteți suprascrie anumite php.ini setări prin .htaccess:
php_value memory_limit 256M
php_value upload_max_filesize 64M
php_value post_max_size 64M
php_value max_execution_time 120> Notă: Aceasta funcționează doar dacă AllowOverride este activat și furnizorul de hosting permite suprascrierea directivelor PHP.
Utilizarea ini_set() în codul PHP
Pentru setări specifice aplicației, puteți suprascrie valorile php.ini la runtime în scripturile PHP:
<?php
ini_set('memory_limit', '512M');
ini_set('max_execution_time', '300');
?>Fișiere php.ini per director (PHP-FPM)
Cu PHP-FPM, puteți aplica diferite setări php.ini la diferiți gazditori virtuali sau directoare prin configurarea fișierelor pool în /etc/php/8.2/fpm/pool.d/. Aceasta este deosebit de utilă atunci când găzduiți mai multe aplicații cu cerințe diferite.
Dacă gestionați mai multe aplicații PHP, un VPS cu cPanel facilitează semnificativ gestionarea setărilor PHP per domeniu printr-o interfață grafică fără a edita manual fișierele de configurare.
8. Securizarea prin php.ini
Configurarea corectă a php.ini este una dintre cele mai eficiente modalități de a vă întări mediul PHP împotriva atacurilor comune.
Dezactivați Funcțiile Periculoase
; Prevent execution of system commands from PHP scripts
disable_functions = exec, passthru, shell_exec, system, proc_open, popen, curl_exec, curl_multi_exec, parse_ini_file, show_sourceRestricționați Accesul la Sistemul de Fișiere
; Limit PHP file access to specific directories
open_basedir = /var/www/html:/tmpAscundeți Informațiile Versiunii PHP
; Don't expose PHP version in HTTP headers
expose_php = OffDezactivați Includerea Fișierelor de la Distanță
; Prevent PHP from including remote URLs (common attack vector)
allow_url_fopen = Off
allow_url_include = OffÎntăriți Securitatea Sesiunilor
session.cookie_httponly = On
session.cookie_secure = On
session.use_strict_mode = On
session.cookie_samesite = "Strict"> Pro Tip: Dacă rulați un site de comerț electronic sau gestionați date sensibile ale utilizatorilor, asociați php.ini întărit cu un Certificat SSL valid pentru a cripta toate datele în tranzit. HTTPS este obligatoriu pentru ca session.cookie_secure = On să funcționeze corect.
9. Greșeli comune în php.ini de evitat
| Greșeală | De ce este o problemă | Soluție |
|---|---|---|
Setarea memory_limit = -1 în producție | Permite scripturilor să consume RAM nelimitat, provocând prăbușiri ale serverului | Setați o limită rezonabilă cum ar fi 256M sau 512M |
display_errors = On în producție | Expune căi de fișiere sensibile și acreditări de bază de date utilizatorilor | Setați la Off și utilizați log_errors = On în schimb |
post_max_size < upload_max_filesize | Provoacă eșecuri silențioase de încărcare | Setați întotdeauna post_max_size ≥ upload_max_filesize |
Editarea fișierului greșit php.ini | Modificările nu se aplică cererilor web | Utilizați phpinfo() pentru a confirma care fișier este încărcat de serverul web |
| Nerestartarea serverului după modificări | Setările vechi rămân active | Restartați întotdeauna Apache sau PHP-FPM după editare |
Lăsarea info.php pe server | Expune configurația completă a serverului atacatorilor | Ștergeți imediat după utilizare |
Setarea allow_url_include = On | Permite atacuri de includere de fișiere la distanță (RFI) | Păstrați întotdeauna acest Off |
10. Concluzie
Stăpânirea configurării php.ini este o abilitate fundamentală pentru orice administrator de sistem sau dezvoltator web. Setările corecte pot face diferența între un server lent și vulnerabil și un mediu rapid, sigur și gata pentru producție.
Pentru a rezuma principalele concluzii:
- Faceți întotdeauna o copie de siguranță a
php.iniînainte de a face modificări - Identificați fișierul corect — CLI și web server SAPIs folosesc adesea fișiere
php.inidiferite - Ajustați limitele de resurse (
memory_limit,max_execution_time,upload_max_filesize) pentru a se potrivi nevoilor aplicației dvs. - Întăriți securitatea prin dezactivarea funcțiilor periculoase, ascunderea informațiilor de versiune și restricționarea accesului la fișiere
- Activați OPcache pentru câștiguri semnificative de performanță
- Nu afișați niciodată erori în producție — înregistrați-le în schimb
- Reporniți serverul web după fiecare modificare și verificați cu
phpinfo()sauphp -i
Mediul de hosting pe care îl alegeți joacă, de asemenea, un rol major în cât de mult control aveți asupra configurării PHP. Cu Servere Dedicate de la AlexHost, obțineți acces complet și nerestricționat la configurația PHP a serverului dvs. — ideal pentru aplicații cu trafic ridicat și cerințe complexe. Pentru proiecte mai mici sau echipe care abia încep, planurile de Găzduire Web Partajată oferă un mediu gestionat în care multe setări PHP sunt pre-optimizate pentru dvs.
Revizuiți în mod regulat configurația php.ini pe măsură ce aplicația dvs. evoluează, versiunile PHP sunt actualizate și modelele de trafic se schimbă. Un mediu PHP bine acordat nu este o configurare unică — este o practică continuă care aduce beneficii în performanță, fiabilitate și securitate.
la toate serviciile de găzduire