Pam mae Adminer.php yn wag? Mae ei ailenwi'n gweithio'n iawn serch hynny? Dadansoddiad o'r achos ac ateb 3 cham.

Prynhawn ddoe, roeddwn i'n ffurfweddu'r offeryn rheoli cronfa ddata Adminer ar y gweinydd. Mae Adminer yn ysgafn ac yn hawdd ei ddefnyddio; mae un ffeil PHP yn gwneud y gwaith, yn wahanol i phpMyAdmin sydd angen criw o ddibyniaethau. Lawrlwythais y fersiwn ddiweddaraf o'r wefan swyddogol, ei huwchlwytho i'r gweinydd, gosodais y caniatâd, ac agorais fy mhorwr, yn barod i'w wirio.

Yna, aeth popeth yn wag.

Pam mae Adminer.php yn wag? Mae ei ailenwi'n gweithio'n iawn serch hynny? Dadansoddiad o'r achos ac ateb 3 cham.

Adnewyddais y dudalen dair gwaith, fy mysedd yn brifo ar ôl pwyso F5 gymaint o weithiau. Dim byd o hyd. Agorais offer datblygu'r porwr; dangosodd gwall 200 OK, ond roedd corff yr ymateb yn wag. Roeddwn wedi fy syfrdanu'n llwyr. Beth oedd yn digwydd?

Meddyliais amdano am eiliad. A allai fod yn broblem caniatâd ffeil? Gwiriais, ac roedd yn 755. A allai fod yn anghydnawsedd fersiwn PHP? Gwiriais, ac mae'n PHP 8.2, sy'n iawn. A allai'r ffeil ei hun fod yn ddiffygiol? Lawrlwythais gopi newydd, ysgrifennais drosto, ac mae'n dal yn wag.

Am ryw reswm anesboniadwy, meddyliais, pam lai geisio newid fy enw?

Fe wnes i ailenwi adminer.php i adminer1.php ac adnewyddu'r dudalen.

Roedd mynediad yn llwyddiannus.

Roeddwn i wir wedi fy nrysu. Yr un ffeil, yr un cod, yr un gweinydd, ac mae modd ei gyrchu drwy newid yr enw yn unig? Pa fath o resymeg gyfriniol yw hyn?

Y broblem gyda ffeil admin.php wag

Yn ddiweddarach sylweddolais nad rhyw fath o ofergoeliaeth oedd hyn; storio PHP oedd yn achosi'r broblem.

Mae OPcache, talfyriad am Opcode Cache, yn estyniad optimeiddio perfformiad ar gyfer PHP. Mae ei egwyddor yn syml: mae PHP yn iaith ddehongli, ac mae pob cais yn ei gwneud yn ofynnol i'r cod PHP gael ei lunio i mewn i opcode cyn ei weithredu. Mae OPcache yn storio'r canlyniad a luniwyd yn y cof, gan ganiatáu i geisiadau dilynol ddefnyddio'r fersiwn a storiwyd yn uniongyrchol heb ail-lunio, gan arwain at welliant perfformiad sylweddol.

Ond dyna lle mae'r broblem.

Yn flaenorol, roedd adminer.php yn dangos "Ni chanfuwyd y ffeil" (roeddwn i wedi uwchlwytho'r ffeil anghywir), ac roedd OPcache wedi storio canlyniad cryno'r cynnwys anghywir hwnnw yn y storfa. Yn ddiweddarach, fe wnes i roi'r cod cywir yn lle adminer.php, ond anwybyddodd OPcache hynny a pharhau i ddarllen yr hen storfa o'r cof, gan arwain at dudalen wag neu'r hen neges gwall.

Pan fyddwch chi'n ei ailenwi i adminer1.php, mae'n dod yn llwybr ffeil hollol newydd ar gyfer OPcache, a bydd yn ail-lwytho ac yn ei ddatrys yn gywir.

Mae fel eich bod chi eisoes wedi cael llyfr newydd, ond bod rhif galwad yr hen lyfr ar gerdyn mynegai'r llyfrgell o hyd. Pan fyddwch chi'n mynd i chwilio amdano ar y silff, wrth gwrs, mae'n wag. Ond os byddwch chi'n newid teitl y llyfr, bydd y llyfrgell yn creu cerdyn mynegai newydd i chi, ac yna gallwch chi ddod o hyd iddo.

Rheswm 1: Mae storfa OPcache yn achosi bylchau gwag

Sut i ddelio ag ef?

Ailgychwynwch y gwasanaeth PHP-FPM a chliriwch y storfa OPcache.

# 查看正在运行的PHP版本
php -v

# 重启对应的PHP-FPM(例如PHP 8.5)
sudo systemctl restart php8.5-fpm

# 或者重启所有PHP-FPM服务
sudo systemctl restart php*-fpm

Ar ôl ailgychwyn, ail-enwch y ffeil yn ôl i adminer.php, adnewyddwch y dudalen we (argymhellir pwyso Ctrl+F5 i orfodi adnewyddu porwr), a dylai'r broblem fod wedi'i datrys.

Ond nid yw'r stori drosodd eto.

Ar ôl ailgychwyn PHP-FPM, newidiais y ffeil adminer.php yn ôl, adnewyddu'r dudalen, ond roedd yn dal yn wag. Roeddwn i wedi fy nrysu'n llwyr.

Rheswm 2: Cyfyngiadau rheol ffurfweddu Nginx

Mae hyn yn arwain at yr ail reswm posibl.

Efallai bod gan y ffeil ffurfweddu Nginx reolau arbennig sy'n cyfyngu ar adminer.php.

Fe wnes i ffurfweddu Fail2Ban yn y panel HestiaCP o'r blaen ac ysgrifennu rheol cyfateb union ar gyfer adminer.php i atal ymosodiadau grym brwd. Roedd y rheol yn gosod cod caled ar yr enw ffeil adminer.php, felly unwaith i chi ei ailenwi i adminer1.php, fe wnaethoch chi osgoi'r rheol Nginx hon a gallech chi ei chyrchu fel arfer.

Mae'r dull datrys problemau yn syml: chwiliwch am gofnodion wedi'u codio'n galed yn y ffurfweddiad Nginx.

sudo grep -rn "adminer.php" /etc/nginx/

Os dewch o hyd i reolau fel `location = /adminer.php { … }`, mae'n golygu bod Nginx yn trin yr enw ffeil penodol hwn yn arbennig. Dim ond ei ddileu neu ei addasu.

Rheswm 3: Gosodiadau arddangos gwall PHP

Mae'r trydydd rheswm yn fwy cynnil.

Mae'r sgript PHP yn cael ei rhyng-gipio neu'n taflu gwall, ond mae'r dudalen yn analluogi arddangos gwallau (display_errors = Off). Mewn amgylchedd cynhyrchu, mae PHP yn cuddio gwallau yn ddiofyn, gan arddangos tudalen wag. Os bydd eich ffeil cofnod (e.e., index.php) yn chwalu am ryw reswm wrth geisio cynnwys "./adminer.php", bydd y dudalen yn troi'n wag.

Mewn sefyllfaoedd o'r fath, gwirio'r log gwallau yw'r dull mwyaf dibynadwy:

# 查看Nginx错误日志
sudo tail -n 20 /var/log/nginx/error.log

# 或者查看HestiaCP对应域名的error日志
sudo tail -n 20 /var/log/nginx/domains/adminer.domain.com.error.log

Bydd y log yn dweud wrthych chi'r rheswm go iawn dros y sgrin wen.

A dweud y gwir, des i o hyd i'r broblem o'r diwedd drwy wirio'r error.log. Trodd allan bod adminer.php yn galw estyniad PHP nad oedd yn bodoli, ac roedd display_errors i ffwrdd, felly roedd y dudalen yn wag, ond roedd y log gwallau yn ei gofnodi'n glir.

Camau datrys problemau a datrys problemau

Mae'r digwyddiad hwn wedi gadael argraff ddofn arnaf.

Yn aml, nid yw problemau technegol mor syml ag y maent yn ymddangos ar yr wyneb. Gall ffeil adminer.php wag ymddangos fel problem ffeil ar yr olwg gyntaf, ond gallai cloddio'n ddyfnach ddatgelu problem storio dros dro, ymhellach i lawr y llinell gallai fod yn broblem ffurfweddu, ac ymhellach i lawr y llinell gallai fod yn broblem gyda'r cod ei hun.

Os nad ydych chi'n rhaglennwr, efallai eich bod chi'n meddwl bod y pethau hyn yn amherthnasol i chi. Ond meddyliwch amdano: mae gan bob ap rydych chi'n ei ddefnyddio, pob tudalen we rydych chi'n ymweld â hi, system debyg yn rhedeg y tu ôl i'r llenni. Storio dros dro, ffurfweddu, trin gwallau—mae'r cysyniadau hyn mewn gwirionedd ym mhobman.

Yn union fel ni fel bodau dynol. Yn aml, gall y "symptomau" rydyn ni'n eu harddangos, fel oedi, pryder ac anniddigrwydd, ymddangos fel diogi ar yr wyneb, ond wrth gloddio'n ddyfnach, gallant fod oherwydd nodau aneglur, cloddio ymhellach, ofn methu, a hyd yn oed yn ddyfnach, meddylfryd a luniwyd gan brofiadau plentyndod.

Dim ond trwy ddod o hyd i'r achos gwirioneddol y gallwn ragnodi'r feddyginiaeth gywir.

Yn olaf, os byddwch hefyd yn dod ar draws problem ffeil adminer.php wag, gwiriwch hi yn y drefn hon:

Yn gyntaf, ailgychwynwch PHP-FPM a chliriwch y storfa, yna gwiriwch y ffurfweddiad Nginx, ac yn olaf gwiriwch yr error.log.

Yn y rhan fwyaf o achosion, mae'r ddau gam cyntaf yn ddigon i ddatrys y broblem.

Wrth gwrs, os nad yw hynny'n gweithio o hyd, yna gwiriwch y error.log.

Bydd yn dweud yr ateb wrthych chi.

Gan eich bod wedi darllen hyd yma, os oeddech chi'n ei chael hi'n ddefnyddiol, hoffwch a rhannwch hi. Os ydych chi eisiau derbyn diweddariadau yn gyntaf, gallwch chi fy nilyn i hefyd!

Diolch am ddarllen fy erthygl. Hwyl fawr.

发表 评论

您的邮箱地址不会被公开。必填项已用*标注

Sgroliwch i'r brig