Go achomair: Socraíonn php_admin_value agus php_admin_flag socruithe PHP i linn PHP-FPM nó i gcumraíocht Apache ar shlí nach féidir le feidhmchláir iad a athrú trí ini_set() ná trí .htaccess. Éilíonn php.net go beacht sin do bhearta idirthréimhseacha PHP2Shell, mar shampla do memory_limit=-1. Tar éis é a shocrú ní mór don tseirbhís atosú, agus ba cheart an luach a sheiceáil sa chomhthéacs gréasáin.
Cén fáth nach ionann “socraithe” agus “faoi ghlas”
Sna laethanta tar éis an 21 Deireadh Fómhair 2026 scríobh go leor riarthóirí bearta idirthréimhseacha php.net isteach ina php.ini. Chuaigh mionsonra den mholadh i ndearmad go minic: ba cheart memory_limit=-1 a shocrú ar bhealach nach féidir le feidhmchláir é a scríobh os a chionn. Luann php.net php_admin_value sa linn FPM nó i gcumraíocht Apache chuige sin go sainráite.
Tá an chúis simplí. Socraíonn go leor CMS, siopaí agus creataí a luachanna féin, mar shampla teorainn chuimhne níos airde d'allmhairithe. Mura bhfuil an luach ach i php.ini, scríobhann an feidhmchlár os a chionn ag an gcéad ghlao eile. Ansin tá an beart cosanta ann ar pháipéar, ach ní sa phróiseas reatha.
Ní bhaineann sé seo le PHP2Shell amháin. Níl gach cruachan, ó aschuir earráide múchta go teorainneacha uaslódála, láidir ach chomh láidir lena leibhéal is laige.
Cé a fhéadfaidh socruithe PHP a athrú ar chor ar bith
Tá ceithre mhód athraithe ag PHP. Tá ceann acu ag gach socrú, agus cinneann sé cé na háiteanna inar féidir é a shocrú. Tagann na bríonna ó lámhleabhar PHP.
| Mód | Cá bhféadfaí an luach a shocrú | Samplaí |
|---|---|---|
INI_USER |
sa script le ini_set() agus i .user.ini |
beagán luachanna ama rite |
INI_PERDIR |
php.ini, .htaccess, httpd.conf, .user.ini |
post_max_size, session.upload_progress.enabled |
INI_SYSTEM |
php.ini nó httpd.conf amháin |
file_uploads, disable_functions |
INI_ALL |
i ngach áit, trí ini_set() freisin |
memory_limit, display_errors, open_basedir |
Is contúirteach go háirithe luachanna INI_ALL: is féidir iad a athrú ó aon script. Ní féidir luachanna INI_PERDIR a athrú le ini_set(), ach is féidir trí .htaccess le mod_php nó .user.ini le PHP-FPM. An té a bhfuil cearta scríofa aige sa webroot, is é sin cód insínte freisin, is féidir leis comhaid den sórt sin a chruthú.
php_admin_value sa linn FPM agus in Apache
Le PHP-FPM tá na luachanna sa chomhad linne. Dearbhaíonn lámhleabhar PHP: ní féidir luachanna a socraíodh le php_admin_value agus php_admin_flag a scríobh os a gcionn le ini_set(). Do luachanna cumasaithe-díchumasaithe úsáid php_admin_flag, do gach ceann eile php_admin_value.
; /etc/php/8.3/fpm/pool.d/seite1.conf (sliocht)
[seite1]
user = seite1
group = seite1
listen = /run/php/seite1.sock
php_admin_value[memory_limit] = -1
php_admin_value[post_max_size] = 32M
php_admin_value[upload_max_filesize] = 24M
php_admin_flag[session.upload_progress.enabled] = off
php_admin_flag[display_errors] = off
php_admin_value[error_log] = /var/log/php/seite1-fehler.log
php_admin_value[open_basedir] = /var/www/seite1/:/tmp/seite1/
De réir php.net baineann memory_limit=-1 leis an gcumraíocht ach amháin i dteannta teorainn chuimhne trí choimeádán nó cgroup. Conas a éiríonn leis sin le systemd, tá sé san alt Teorainneacha cuimhne a shocrú le systemd agus cgroups.
In Apache le mod_php baineann na treoracha le cumraíocht an fhreastalaí nó leis an VirtualHost. De réir lámhleabhar PHP ní cheadaítear iad i .htaccess, agus nuair a bhíonn siad socraithe, ní féidir le .htaccess ná le ini_set() iad a athrú.
<VirtualHost *:443>
ServerName www.example.de
DocumentRoot /var/www/seite1/public
<IfModule php_module>
php_admin_value memory_limit -1
php_admin_value post_max_size 32M
php_admin_value upload_max_filesize 24M
php_admin_flag session.upload_progress.enabled off
php_admin_flag display_errors off
</IfModule>
</VirtualHost>
Dhá mhionsonra ón lámhleabhar: chun luach a socraíodh roimhe seo a scriosadh, úsáid none mar luach. Agus níl brí ag tairisigh PHP ar nós E_ALL i gcumraíocht Apache; do error_reporting ní mór duit an luach uimhriúil a thabhairt ansin.
Cé na luachanna ba cheart duit a ghlasáil
Ní gá gach socrú a ghlasáil. Tá ciall leis do gach rud a bhaineann le slándáil nó a fhónann mar bheart idirthréimhseach:
- Luachanna idirthréimhseacha PHP2Shell ó php.net:
memory_limit,post_max_size,upload_max_filesize,session.upload_progress.enabledagus ar PHP 8.5fatal_error_backtraces. - Aschur earráide agus logáil:
display_errors,display_startup_errors,log_errors,error_log. - Rochtain comhad agus leithlisiú:
open_basedir,upload_tmp_dir,session.save_path. - Rochtain líonra ó PHP:
allow_url_includeagus, mura bhfuil sé de dhíth ar an bhfeidhmchlár,allow_url_fopen. - Feidhmeanna blocáilte trí
disable_functions, a chuireann leis an liosta php.ini sa linn de réir an lámhleabhair seachas é a chur ina ionad. Mionsonraí sa treoir disable_functions a úsáid i gceart.
Le session.upload_progress.enabled tá an glasáil thar a bheith tábhachtach, mar go bhféadfaí an luach a chumasú arís trí .user.ini ar shlí eile. Tuilleadh ag session.upload_progress a mhúchadh: i gceart agus go buan.
A sheiceáil an bhfuil an glas i bhfeidhm
Tar éis gach athraithe atosaigh an tseirbhís agus seiceáil an luach sa chomhthéacs gréasáin. Léiríonn comhad seiceála gearr, a scriostar láithreach arís, an gcoinníonn an linn an luach, fiú nuair a theastaíonn ón bhfeidhmchlár é a athrú:
<?php
// Comhad seiceála: cuir síos go gairid, glaoigh air uair amháin tríd an bhfearann, scrios láithreach
header('Content-Type: text/plain');
$vorher = ini_get('memory_limit');
$versuch = @ini_set('memory_limit', '256M');
echo "memory_limit: $vorher\n";
echo 'Änderung per ini_set() ', ($versuch === false ? 'blockiert' : 'MÖGLICH'), "\n";
Táthar ag súil le -1 agus “blockiert”. Más “MÖGLICH” an t-aschur, níl an luach socraithe trí php_admin_value nó níor atosaíodh an tseirbhís fós. Déan an tseiceáil arís do gach linn agus gach leagan PHP.
Coinnigh na luachanna faoi ghlas go lárnach, mar shampla i dteimpléad linne nó i do bhainistíocht cumraíochta. Scríobhann painéil óstála os cionn comhad linne a athraíodh de láimh uaireanta an chéad uair eile a sábháiltear iad; ansin baineann na luachanna leis na réimsí a bhfuil an painéal ceaptha dóibh.
Conas a ordaíonn PHP a leibhéil chumraíochta ina n-iomláine, míníonn Míniú ar php.ini: struchtúr, leibhéil agus tosaíocht. Tá na bearta idirthréimhseacha iomlána ag Gníomhartha láithreacha mura féidir leat paistiú fós.
Conclúid: ní socraithe i ndáiríre go dtí go bhfuil sé faoi ghlas
Chuir bearta idirthréimhseacha php.net maidir le PHP2Shell idirdhealú i láthair na hintinne a cailleadh go minic roimhe seo: i gcás go leor socruithe ní moladh ach luach i php.ini, is sonrú é luach i php_admin_value. Do luachanna áise ar nós an chriosa ama is neamhthábhachtach an difríocht. Do shocruithe slándála agus do bhearta idirthréimhseacha cinneann sé an bhfuil an beart i bhfeidhm ar chor ar bith san oibríocht reatha.
Tá an t-iarracht intuigthe: dornán línte do gach linn nó VirtualHost, atosú, seiceáil ghearr. Coinnigh liosta na luachanna faoi ghlas beag agus réasúnaithe, ionas gur féidir le forbróirí a thuiscint cén fáth nach bhfuil cead ag a bhfeidhmchlár luach a athrú. Agus cothaigh an liosta i do theimpléid, ionas go bhfaigheann suíomhanna gréasáin nua go huathoibríoch é.
Conas a chabhraíonn PHP SOS go nithiúil?
- Leibhéil a léamh: Faighimid amach do gach suíomh gréasáin cé na luachanna ó php.ini, linn, Apache,
.htaccessnó.user.iniatá i bhfeidhm i ndáiríre. - Glais a shocrú: Iontrálaimid luachanna a bhaineann le slándáil agus bearta idirthréimhseacha PHP2Shell mar
php_admin_valuenóphp_admin_flagagus atosaímid na seirbhísí. - An feidhmchlár a thástáil: Seiceálaimid an ritheann an feidhmchlár gan earráidí leis na luachanna faoi ghlas, agus measaimid log na n-earráidí.
- Teimpléid a chothú: Faoi chuimsiú chruachan an fhreastalaí glacaimid na luachanna isteach i dteimpléid linne agus i ndoiciméadacht.
Ceisteanna coitianta
Cad é an difríocht idir php_value agus php_admin_value?
Socraíonn an bheirt acu socrú PHP. Is féidir leis an bhfeidhmchlár luachanna ó php_value a athrú arís níos déanaí, mar shampla le ini_set() nó .htaccess. De réir lámhleabhar PHP tá luachanna ó php_admin_value agus php_admin_flag faoi ghlas do ini_set(), in Apache do .htaccess freisin.
An féidir liom php_admin_value a scríobh i gcomhad .htaccess?
Ní féidir. De réir lámhleabhar PHP ní cheadaítear php_admin_value i gcomhaid .htaccess. Baineann sé le cumraíocht fhreastalaí Apache nó leis an VirtualHost, i PHP-FPM leis an gcomhad linne.
Cad a tharlaíonn má iarrann feidhmchlár luach faoi ghlas a athrú?
Teipeann ar ghlao ini_set() agus filleann sé false, fanann an luach faoi ghlas. Éiríonn le feidhmchláir dea-chláraithe leis sin. Seiceáil log na n-earráidí agus na príomhfheidhmeanna tar éis an aistrithe mar sin féin.
An gcaithfidh mé atosú tar éis athraithe sa linn?
Caithfidh. Léann PHP-FPM na comhaid linne ag tosú nó nuair a athluchtaítear an tseirbhís. In Apache le mod_php tá an rud céanna fíor do chumraíocht an fhreastalaí. Gan atosú leanann an seanluach ar aghaidh.
An féidir disable_functions a leathnú sa linn?
Is féidir, le hairíonna ar leith: de réir lámhleabhar PHP ní scríobhann disable_functions sa linn FPM os cionn na luachanna ó php.ini, cuireann sé leo. Mar sin is féidir leis an linn tuilleadh feidhmeanna a bhlocáil, ach gan aon cheann a scaoileadh.