Economisiți 15% la toate serviciile de găzduire

Testează-ți abilitățile și obține Reducere la orice plan de găzduire

Utilizați codul: Skills Începeți
Secțiuni
Administrație Linux

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 și open_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 --ini

Exemplu 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.php

Pasul 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.php

Pasul 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.php

Metoda 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ă / ConfigurareCale 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.bak

Aceasta 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.ini

Sau utilizați vim pentru editare mai avansată:

sudo vim /etc/php/8.2/apache2/php.ini

Pasul 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ți CTRL + 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, apoi Y, apoi Enter
  • vim: Apăsați ESC, tastați :wq, apoi apăsați Enter

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 = 3000

Setă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.log

Gestionarea 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 = On

OPcache (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 = 1

5. 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 httpd

Nginx + PHP-FPM

# Restart PHP-FPM (replace 8.2 with your PHP version)
sudo systemctl restart php8.2-fpm

# Restart Nginx
sudo systemctl restart nginx

Reî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-fpm

Verificați dacă serviciile sunt în funcțiune

sudo systemctl status apache2
sudo systemctl status php8.2-fpm

6. 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_source

Restricționați Accesul la Sistemul de Fișiere

; Limit PHP file access to specific directories
open_basedir = /var/www/html:/tmp

Ascundeți Informațiile Versiunii PHP

; Don't expose PHP version in HTTP headers
expose_php = Off

Dezactivaț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țiePermite scripturilor să consume RAM nelimitat, provocând prăbușiri ale serveruluiSetați o limită rezonabilă cum ar fi 256M sau 512M
display_errors = On în producțieExpune căi de fișiere sensibile și acreditări de bază de date utilizatorilorSetați la Off și utilizați log_errors = On în schimb
post_max_size < upload_max_filesizeProvoacă eșecuri silențioase de încărcareSetați întotdeauna post_max_sizeupload_max_filesize
Editarea fișierului greșit php.iniModificările nu se aplică cererilor webUtilizați phpinfo() pentru a confirma care fișier este încărcat de serverul web
Nerestartarea serverului după modificăriSetările vechi rămân activeRestartați întotdeauna Apache sau PHP-FPM după editare
Lăsarea info.php pe serverExpune configurația completă a serverului atacatorilorȘtergeți imediat după utilizare
Setarea allow_url_include = OnPermite 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.ini diferite
  • 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() sau php -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.