Go achomair: Ar shuíomh gréasáin beo baineann display_errors = Off le php.ini, mar aon le display_startup_errors = Off, log_errors = On agus log earráidí lasmuigh den webroot. Ina theannta sin ní mór do CMS agus creataí a bheith ag rith i mód táirgeachta, nó taispeánfaidh a leathanaigh earráide féin na sonraí. Faoi ghlas le php_admin_flag agus seiceáilte tar éis gach nuashonraithe, fanann earráidí sa log in ionad sa bhrabhsálaí.
An méid a nochtann teachtaireacht earráide amháin
Rabhadh ag barr an leathanaigh, “Fatal error” in ionad forbhreathnú an ordaithe: tá cuma neamhdhíobhálach ar aschuir den sórt sin. Do ionsaitheoir is léarscáil iad. Léiríonn siad cosáin iomlána comhad, ainmneacha bunachar sonraí agus táblaí, leabharlanna in úsáid agus go minic leagan PHP.
Go háirithe i gcásanna cosúil le PHP2Shell, ina gcuardaítear freastalaithe leochaileacha ar scála mór, ba cheart do fhreastalaí an oiread agus is féidir níos lú a nochtadh fúithi féin. Ní dhúnann sé sin aon leochaileacht san ateangaire PHP, ach déanann sé gach céim eile tar éis briste isteach níos deacra agus déanann sé ionsaithe spriocdhírithe ar d'fheidhmchlár níos stuama.
Chomh maith leis sin tá cosaint sonraí ann. Is féidir le teachtaireachtaí earráide codanna d'iarratais a bheith iontu, mar shampla seoltaí ríomhphoist ó fhoirmeacha. An méid a thaispeántar i mbrabhsálaí cuairteora, níl sé faoi do smacht a thuilleadh.
Níl na réamhshocruithe beartaithe don táirgeadh
Glacann go leor leis go gceileann PHP earráidí uaidh féin. Deir lámhleabhar PHP rud éigin eile: is é 1 an réamhshocrú ionsuite de display_errors, agus tá display_startup_errors cumasaithe de réir réamhshocraithe ó PHP 8.0 freisin. Ní shocraíonn ach an teimpléad seachadta php.ini-production an dá cheann ar Off. Tugann an lámhleabhar feidhm fhorbartha ar display_errors go sainráite nár cheart a úsáid riamh ar chórais ar an Idirlíon.
Ní rud é de ghnáth go n-úsáideann do fhreastalaí an teimpléad táirgeachta. Tosaíonn íomhánna coimeádán uaireanta gan php.ini ar chor ar bith, socraíonn painéil óstála luachanna dá gcuid féin, agus tar éis aistrithe cóipeáiltear an teimpléad forbartha go minic.
display_errors off: forbhreathnú ar na socruithe
Tá na luachanna seo a leanas ciallmhar do fhreastalaithe táirgeachta. Ní oibríonn na tairisigh ar nós E_ALL ach i php.ini; i gcumraíocht Apache níl brí leo de réir lámhleabhar PHP agus ní mór iad a thabhairt mar uimhir.
| Socrú | Táirgeadh | Cuspóir |
|---|---|---|
display_errors |
Off |
gan earráidí sa bhrabhsálaí |
display_startup_errors |
Off |
gan earráidí le linn tosaithe PHP san aschur |
log_errors |
On |
earráidí a scríobh sa phrótacal |
error_log |
cosán lasmuigh den webroot | comhad logála dá chuid féin do gach suíomh gréasáin nó linn |
error_reporting |
E_ALL |
gach earráid a logáil, gan iad a thaispeáint |
html_errors |
Off |
gnáth-théacs in ionad HTML i bprótacail |
zend.exception_ignore_args |
On |
gan argóintí feidhme i stacktraces |
fatal_error_backtraces |
0 go dtí an nuashonrú (PHP 8.5 amháin) |
beart idirthréimhseach de réir php.net |
Tá zend.exception_ignore_args thar a bheith luachmhar. Gan an socrú seo is féidir le stacktraces i logaí agus ar leathanaigh earráide argóintí glaonna feidhme a bheith iontu, agus focail faire nó comharthaí atá á bpróiseáil díreach ansin san áireamh.
; php.ini den SAPI gréasáin
display_errors = Off
display_startup_errors = Off
log_errors = On
error_log = /var/log/php/website-fehler.log
error_reporting = E_ALL
html_errors = Off
zend.exception_ignore_args = On
; PHP 8.5 amháin, beart idirthréimhseach go dtí an nuashonrú go 8.5.12:
; fatal_error_backtraces = 0
Sa linn FPM cuireann tú na príomhluachanna faoi ghlas ina theannta sin, ionas nach gcumasaíonn aon fheidhmchlár arís iad le ini_set():
; m.sh. /etc/php/8.3/fpm/pool.d/seite1.conf
php_admin_flag[display_errors] = off
php_admin_flag[display_startup_errors] = off
php_admin_flag[log_errors] = on
php_admin_value[error_log] = /var/log/php/seite1-fehler.log
Ina dhiaidh sin atosaigh an tseirbhís PHP ábhartha. Conas a oibríonn an glasáil go beacht, míníonn an t-alt php_admin_value: socruithe a chosc ar scríobh os a gcionn. Gheobhaidh tú bunchumraíocht iomlán ag php.ini a chumrú go slán.
An dara lasc: mód dífhabhtaithe an fheidhmchláir
Níl ann ach leath den obair PHP. Gabhann creataí nua-aimseartha earráidí iad féin agus taispeánann siad leathanaigh earráide dá gcuid féin, atá an-mhionsonraithe go minic. I mód dífhabhtaithe tá sleachta cóid foinse, luachanna cumraíochta agus uaireanta athróga timpeallachta iontu. Feictear na leathanaigh seo fiú nuair atá display_errors múchta i PHP.
Seiceáil an lasc dá chuid féin do gach feidhmchlár dá bhrí sin. Maidir le WordPress is iad sin WP_DEBUG agus WP_DEBUG_DISPLAY i wp-config.php, maidir le Laravel agus Symfony APP_DEBUG agus an timpeallacht sa chomhad .env, i gcórais eile an mód táirgeachta de réir dhoiciméadacht an mhonaróra. Ar chóras beo ba cheart an mód dífhabhtaithe a bheith as go buan, tá “díreach go gairid le haghaidh tástála” ina riosca freisin.
Conas a láimhseáiltear earráidí go glan san fheidhmchlár, in ionad iad a chur faoi chois, déanann Earráidí agus eisceachtaí i PHP cur síos air.
Conas a aimsíonn tú aschur earráide sula ndéanann daoine eile
Ní leor é a shocrú uair amháin. Filleann aschuir earráide tar éis nuashonruithe, aistrithe nó athruithe painéil. Cabhraíonn sreabhadh gearr seiceála:
- Seiceáil na luachanna éifeachtacha sa chomhthéacs gréasáin, ní ar an líne ordaithe amháin, mar shampla le comhad seiceála a cuireadh síos go gairid agus a scriosadh láithreach ina dhiaidh.
- Seiceáil mód dífhabhtaithe gach feidhmchláir ina chomhad cumraíochta.
- Cuardaigh leathanaigh sheachadta ar théacsanna earráide tipiciúla, mar a thaispeántar sa bhloc cóid thíos.
- Cuardaigh i gcuardaitheoir le fiosrúchán
site:ar d'fhearann ar théarmaí ar nós “Fatal error” nó “Warning”. - Seiceáil an scríobhtar sa log earráidí agus nach bhfuil sé sa webroot.
# Leathanaigh sheachadta a chuardach ar théacsanna earráide PHP (d'fhearainn féin amháin)
for url in https://www.example.de/ https://www.example.de/kontakt/; do
curl -s "$url" | grep -E -o "(Fatal error|Warning|Notice|Deprecated|Stack trace)[^<]{0,80}" | head -3
done
# An scríobhtar sa log earráidí?
ls -l /var/log/php/
Ní ionadaí é earráidí a cheilt ar iad a cheartú. Is leid é log lán rabhaidh go bhfuil cothabháil de dhíth, agus tar éis briste isteach is minic gur rian tábhachtach é. An méid a logálann tú agus an méid nach logálann, déanann Logáil go slán: earráidí a logáil gan sceitheadh sonraí cur síos air.
Conclúid: ciúin sa bhrabhsálaí, cainteach sa log
Tá an riail d'fhreastalaithe táirgeachta simplí: baineann earráidí leis an bprótacal, ní leis an suíomh gréasáin. Sa chleachtas teipeann uirthi mar gheall ar réamhshocruithe nach bhfuil beartaithe don táirgeadh, mar gheall ar lascanna dífhabhtaithe i bhfeidhmchláir agus mar gheall ar chumraíochtaí a thit ar ais tar éis nuashonruithe nó aistrithe.
An té a mhúchann display_errors agus display_startup_errors, a chuireann na luachanna faoi ghlas sa linn, a rialaíonn mód dífhabhtaithe an fheidhmchláir agus a sheiceálann an toradh go rialta, dúnann sé ceann de na foinsí is minice de nochtadh faisnéise gan ghá. Tá an iarracht beag, fanann an éifeacht fad is a fhanann an tseiceáil mar chuid de gach nuashonraithe.
Níor cheart pointe amháin a ligean i ndearmad: ní bosca bruscair é an log earráidí. An té a léann go rialta é, aithníonn sé nuashonruithe lochtacha, feidhmeanna as dáta agus uaireanta na chéad rianta d'ionsaí freisin, i bhfad sula dtugann custaiméirí aon rud faoi deara.
Conas a chabhraíonn PHP SOS go nithiúil?
- Seiceáil: Léimid na socruithe earráide éifeachtacha do gach suíomh gréasáin agus linn agus cuardaímid leathanaigh sheachadta ar aschur earráide.
- Aistriú: Socraímid socruithe PHP agus feidhmchláir don oibríocht táirgeachta agus cuirimid faoi ghlas iad i gcoinne scríobh os a gcionn.
- Prótacail a shocrú: Tá logaí earráide lasmuigh den webroot, rothlaítear iad agus tá siad inrochtana do d'fhorbróirí.
- A choinneáil go buan: Sa chonradh cothabhála slándála seiceálaimid na socruithe arís tar éis gach nuashonraithe.
Ceisteanna coitianta
Nach bhfuil display_errors múchta i PHP ar aon nós?
Níl go huathoibríoch. De réir lámhleabhar PHP is é 1 réamhshocrú ionsuite display_errors. Ní shocraíonn ach an teimpléad seachadta php.ini-production Off. An n-úsáideann do fhreastalaí an teimpléad seo, braitheann sé ar an dáileadh, ar an bpainéal nó ar íomhá an choimeádáin agus ba cheart é a sheiceáil.
An leor display_errors = Off má ritheann WordPress nó Laravel i mód dífhabhtaithe?
Ní leor. Tagann leathanaigh earráide dá gcuid féin le go leor CMS agus creataí a fhéadann sonraí a thaispeáint neamhspleách ar PHP. Múch mód dífhabhtaithe an fheidhmchláir freisin dá bhrí sin, mar shampla WP_DEBUG_DISPLAY i WordPress nó APP_DEBUG i Laravel agus Symfony.
Cá dtéann earráidí nuair nach dtaispeántar iad a thuilleadh?
Le log_errors = On scríobhann PHP iad sa chomhad a ainmníonn error_log, nó i bprótacal an mhodha oibriúcháin ábhartha, mar shampla log earráidí Apache nó PHP-FPM. Ba cheart don chomhad a bheith lasmuigh den webroot agus rothlú go rialta.
Cad é an baint atá ag fatal_error_backtraces le PHP2Shell?
Tá an socrú ann ó PHP 8.5 agus tá sé gníomhach de réir réamhshocraithe. Luann php.net fatal_error_backtraces=0 le hatosú ina dhiaidh mar cheann de na bearta idirthréimhseacha do PHP 8.5, fad atá an nuashonrú go 8.5.12 fós le teacht. Ní chuireann sé ionad an nuashonraithe.