Adminer.php හිස් ඇයි? එය නැවත නම් කිරීම හොඳින් ක්‍රියාත්මක වෙනවාද? හේතුව විශ්ලේෂණය සහ පියවර 3 ක විසඳුමක්.

ඊයේ දහවල්, මම සේවාදායකයේ Adminer දත්ත සමුදා කළමනාකරණ මෙවලම වින්‍යාස කරමින් සිටියෙමි. Adminer සැහැල්ලු හා භාවිතා කිරීමට පහසුය; තනි PHP ගොනුවක් එම කාර්යය ඉටු කරයි, phpMyAdmin මෙන් නොව , එයට පරායත්තතා රාශියක් අවශ්‍ය වේ. මම නිල වෙබ් අඩවියෙන් නවතම අනුවාදය බාගත කර, එය සේවාදායකයට උඩුගත කර, අවසර සකසා, මගේ බ්‍රව්සරය විවෘත කළෙමි, එය පරීක්ෂා කිරීමට සූදානම්ව සිටියෙමි.

ඊට පස්සේ, සියල්ල හිස් වුණා.

Adminer.php හිස් ඇයි? එය නැවත නම් කිරීම හොඳින් ක්‍රියාත්මක වෙනවාද? හේතුව විශ්ලේෂණය සහ පියවර 3 ක විසඳුමක්.

මම පිටුව තුන් වතාවක් නැවුම් කළා, මගේ ඇඟිලි බොහෝ වාරයක් F5 එබීමෙන් රිදෙනවා. තවමත් කිසිවක් නැත. මම බ්‍රව්සරයේ සංවර්ධක මෙවලම් විවෘත කළා; එය 200 OK දෝෂයක් පෙන්නුම් කළා, නමුත් ප්‍රතිචාර අන්තර්ගතය හිස්. මම සම්පූර්ණයෙන්ම මවිතයට පත් වුණා. මොකද වෙන්නේ?

මම ඒ ගැන මොහොතක් කල්පනා කළා. ඒක ගොනු අවසර ගැටලුවක් වෙන්න පුළුවන්ද? මම පරීක්ෂා කළා, ඒක 755. ඒක PHP අනුවාදයේ නොගැලපීමක් වෙන්න පුළුවන්ද? මම පරීක්ෂා කළා, ඒක PHP 8.2, ඒක හරි. ගොනුවම දෝෂ සහිත විය හැකිද? මම අලුත් පිටපතක් බාගත කළා, එය නැවත ලිව්වා, නමුත් එය තවමත් හිස්.

කිසියම් පැහැදිලි කළ නොහැකි හේතුවක් නිසා, මගේ නම වෙනස් කිරීමට උත්සාහ නොකරන්නේ මන්දැයි මම සිතුවෙමි.

මම adminer.php, adminer1.php ලෙස නැවත නම් කර පිටුව නැවුම් කළෙමි.

ප්‍රවේශය සාර්ථක විය.

මට ඇත්තටම පුදුම හිතුනා. එකම ගොනුව, එකම කේතය, එකම සේවාදායකය, නම වෙනස් කිරීමෙන් පමණක් එයට ප්‍රවේශ විය හැකිද? මේ මොන වගේ අද්භූත තර්කයක්ද?

හිස් adminer.php ගොනුවක ගැටළුව

පසුව මට වැටහුණා මේක යම් ආකාරයක මිථ්‍යා විශ්වාසයක් නොවන බව; ගැටලුව ඇති කළේ PHP හැඹිලිගත කිරීම බව.

Opcode Cache සඳහා කෙටියෙන් OPcache, PHP සඳහා කාර්ය සාධන ප්‍රශස්තිකරණ දිගුවකි. එහි මූලධර්මය සරලයි: PHP යනු අර්ථකථනය කරන ලද භාෂාවක් වන අතර, සෑම ඉල්ලීමක්ම ක්‍රියාත්මක කිරීමට පෙර PHP කේතය opcode බවට සම්පාදනය කිරීම අවශ්‍ය වේ. OPcache විසින් සම්පාදනය කරන ලද ප්‍රතිඵලය මතකයේ හැඹිලිගත කරයි, පසුව කරන ලද ඉල්ලීම් නැවත සම්පාදනය කිරීමකින් තොරව කෙලින්ම හැඹිලිගත කළ අනුවාදය භාවිතා කිරීමට ඉඩ සලසයි, එහි ප්‍රතිඵලයක් ලෙස සැලකිය යුතු කාර්ය සාධන දියුණුවක් ඇති වේ.

නමුත් ගැටලුව ඇත්තේ එතැනයි.

මීට පෙර, adminer.php හි "ගොනුව හමු නොවීය" (මම වැරදි ගොනුව උඩුගත කර තිබුණි) ප්‍රදර්ශනය කළ අතර, OPcache විසින් එම වැරදි අන්තර්ගතයේ සම්පාදනය කරන ලද ප්‍රතිඵලය හැඹිලිගත කර තිබුණි. පසුව, මම adminer.php නිවැරදි කේතයෙන් ප්‍රතිස්ථාපනය කළ නමුත්, OPcache එය නොසලකා හැර මතකයෙන් පැරණි හැඹිලිය කියවීම දිගටම කරගෙන ගිය අතර, එහි ප්‍රතිඵලයක් ලෙස හිස් පිටුවක් හෝ පැරණි දෝෂ පණිවිඩයක් ලැබුණි.

ඔබ එය adminer1.php ලෙස නැවත නම් කළ විට, එය OPcache සඳහා සම්පූර්ණයෙන්ම නව ගොනු මාර්ගයක් බවට පත් වන අතර, එය නැවත පූරණය කර එය නිවැරදිව විසඳනු ඇත.

ඔයා අලුත් පොතක් අරන් වගේ, ඒත් පුස්තකාලෙ ඉන්ඩෙක්ස් කාඩ් එකේ තාමත් පරණ පොතෙ කෝල් නම්බර් එක තියෙනවා. රාක්කෙ හොයනකොට නම් ඒක හිස්. ඒත් ඔයා පොතෙ නම වෙනස් කලොත්, පුස්තකාලෙ ඔයාට අලුත් ඉන්ඩෙක්ස් කාඩ් එකක් හදයි, එතකොට ඔයාට ඒක හොයාගන්න පුළුවන්.

හේතුව 1: OPcache හැඹිලිය හිස් අවකාශයන් ඇති කරයි

එය සමඟ කටයුතු කරන්නේ කෙසේද?

PHP-FPM සේවාව නැවත ආරම්භ කර OPcache හැඹිලිය හිස් කරන්න.

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

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

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

නැවත ආරම්භ කිරීමෙන් පසු, ගොනුව adminer.php ලෙස නැවත නම් කරන්න, වෙබ් පිටුව නැවුම් කරන්න (බ්‍රවුසරය නැවුම් කිරීමට බල කිරීමට Ctrl+F5 ඔබන්න), එවිට ගැටළුව විසඳිය යුතුය.

නමුත් කතාව තවම අවසන් නැත.

PHP-FPM නැවත ආරම්භ කිරීමෙන් පසු, මම adminer.php ගොනුව නැවත වෙනස් කර, පිටුව නැවුම් කළෙමි, නමුත් එය තවමත් හිස්ව තිබුණි. මම සම්පූර්ණයෙන්ම ව්‍යාකූල වී සිටියෙමි.

හේතුව 2: Nginx වින්‍යාස රීති සීමාවන්

මෙය දෙවන විය හැකි හේතුවට මග පාදයි.

Nginx වින්‍යාස ගොනුවේ adminer.php සීමා කරන විශේෂ නීති තිබිය හැක.

මම කලින් HestiaCP පැනලයේ Fail2Ban වින්‍යාස කර adminer.php සඳහා බෲට්-ෆෝස් ප්‍රහාර වැළැක්වීම සඳහා නිශ්චිත ගැලපුම් රීතියක් ලිව්වා . රීතිය adminer.php ගොනු නාමය දෘඪ කේතනය කර ඇත, එබැවින් ඔබ එය adminer1.php ලෙස නැවත නම් කළ පසු, ඔබට මෙම Nginx රීතිය මඟ හැරුණු අතර එයට සාමාන්‍යයෙන් ප්‍රවේශ විය හැකිය.

දෝශ නිරාකරණ ක්‍රමය සරලයි: Nginx වින්‍යාසය තුළ දෘඩ-කේතගත ඇතුළත් කිරීම් සොයන්න.

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

`location = /adminer.php { … }` වැනි නීති ඔබට හමු වුවහොත්, එයින් අදහස් වන්නේ Nginx මෙම නිශ්චිත ගොනු නාමය විශේෂයෙන් හසුරුවන බවයි. එය මකන්න හෝ වෙනස් කරන්න.

හේතුව 3: PHP දෝෂ දර්ශන සැකසුම්

තුන්වන හේතුව වඩාත් සියුම් ය.

PHP ස්ක්‍රිප්ට් එක බාධා කර හෝ දෝෂයක් ලබා දෙයි, නමුත් පිටුව දෝෂ සංදර්ශකය අක්‍රීය කරයි (display_errors = Off). නිෂ්පාදන පරිසරයකදී, PHP පෙරනිමියෙන් දෝෂ සඟවා හිස් පිටුවක් පෙන්වයි. "./adminer.php" ඇතුළත් කිරීමට උත්සාහ කරන අතරතුර ඔබගේ ඇතුළත් කිරීමේ ගොනුව (උදා: index.php) කිසියම් හේතුවක් නිසා බිඳ වැටුණහොත්, පිටුව හිස් වනු ඇත.

මෙම අවස්ථාවේදී, දෝෂ ලොගය පරීක්ෂා කිරීම වඩාත්ම විශ්වාසදායක ක්‍රමයයි:

# 查看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

සුදු තිරයට සැබෑ හේතුව ලොගය ඔබට කියනු ඇත.

ඇත්තම කිව්වොත්, මම අවසානයේ error.log පරීක්ෂා කිරීමෙන් ගැටලුව සොයා ගත්තා. adminer.php නොපවතින PHP දිගුවක් අමතන බවත්, display_errors අක්‍රිය කර ඇති බවත්, එබැවින් පිටුව හිස්ව තිබුණත්, දෝෂ ලොගයේ එය පැහැදිලිව සටහන් වී ඇති බවත් පෙනී ගියේය.

විසඳුම් සහ දෝශ නිරාකරණ පියවර

මේ සිදුවීම මා තුළ ගැඹුරු හැඟීමක් ඇති කළා.

තාක්ෂණික ගැටළු බොහෝ විට මතුපිටින් පෙනෙන තරම් සරල නොවේ. හිස් adminer.php ගොනුවක් මුලින්ම බැලූ බැල්මට ගොනු ගැටළුවක් ලෙස පෙනෙන්නට පුළුවන, නමුත් ගැඹුරට හාරා බැලීමෙන් හැඹිලිගත කිරීමේ ගැටළුවක් හෙළි විය හැකිය, තවදුරටත් එය වින්‍යාස කිරීමේ ගැටළුවක් විය හැකි අතර, තව දුරටත් එය කේතයේම ගැටළුවක් විය හැකිය.

ඔබ ක්‍රමලේඛකයෙකු නොවේ නම්, මේ දේවල් ඔබට අදාළ නොවන බව ඔබට සිතෙන්නට පුළුවන. නමුත් ඒ ගැන සිතන්න: ඔබ භාවිතා කරන සෑම යෙදුමකම, ඔබ පිවිසෙන සෑම වෙබ් පිටුවකම, තිරය පිටුපස ක්‍රියාත්මක වන සමාන පද්ධතියක් ඇත. හැඹිලිගත කිරීම, වින්‍යාස කිරීම, දෝෂ හැසිරවීම - මෙම සංකල්ප ඇත්ත වශයෙන්ම සෑම තැනකම තිබේ.

අපි මිනිස්සු වගේමයි. බොහෝ විට, අපි ප්‍රදර්ශනය කරන "රෝග ලක්ෂණ", එනම් කල් දැමීම, කාංසාව සහ කෝපය, මතුපිටින් කම්මැලිකමක් ලෙස පෙනුනත්, ගැඹුරට හාරන විට, ඒවා අපැහැදිලි ඉලක්ක, තවදුරටත් හාරන එක, අසාර්ථක වීමේ බිය සහ ඊටත් වඩා ගැඹුරු, ළමා අත්දැකීම් මගින් හැඩගැසුණු මානසිකත්වයක් නිසා විය හැකිය.

සැබෑ මූල හේතුව සොයා ගැනීමෙන් පමණක් අපට නිවැරදි ඖෂධ නියම කළ හැකිය.

අවසාන වශයෙන්, ඔබට හිස් adminer.php ගොනුවක ගැටළුවක් ඇති වුවහොත්, මෙම අනුපිළිවෙලින් එය පරීක්ෂා කරන්න:

පළමුව, PHP-FPM නැවත ආරම්භ කර හැඹිලිය හිස් කරන්න, පසුව Nginx වින්‍යාසය පරීක්ෂා කරන්න, අවසානයේ error.log පරීක්ෂා කරන්න.

බොහෝ අවස්ථාවලදී, ගැටළුව විසඳීමට පළමු පියවර දෙක ප්‍රමාණවත් වේ.

ඇත්ත වශයෙන්ම, එය තවමත් ක්‍රියාත්මක නොවන්නේ නම්, error.log පරීක්ෂා කරන්න.

එය ඔබට පිළිතුර කියයි.

මෙච්චර දුරක් කියවලා ඉවර නිසා, මේක ප්‍රයෝජනවත් කියලා හිතුනනම් like කරලා share කරන්න. මුලින්ම updates ලබා ගන්න කැමති නම්, මාව follow කරන්නත් පුළුවන්!

මගේ ලිපිය කියෙව්වට ස්තූතියි. ඊළඟ වතාවේ හමුවෙමු.

චෙන් වෙයිලියැන්ග්ගේ බ්ලොග් අඩවියේ ( https://www.chenweiliang.com/ ) බෙදාගත් "Adminer.php ප්‍රවේශය හිස්ද? නැවත නම් කිරීම සාමාන්‍යයෙන් ක්‍රියාත්මක වේද? හේතු විශ්ලේෂණය සහ ගැටලුව හොඳින් විසඳීමට පියවර 3" යන ලිපිය ඔබට ප්‍රයෝජනවත් වනු ඇතැයි අපි බලාපොරොත්තු වෙමු.

මෙම ලිපියේ සබැඳිය බෙදා ගැනීමට නිදහස් වන්න: https://www.chenweiliang.com/cwl-34403.html

තවත් සැඟවුණු උපක්‍රම අගුළු ඇරීමට🔑, අපගේ ටෙලිග්‍රාම් නාලිකාවට සම්බන්ධ වීමට සාදරයෙන් පිළිගනිමු!

ඔබ එයට කැමති නම් Share කර Like කරන්න! ඔබගේ කොටස් සහ කැමැත්ත අපගේ අඛණ්ඩ අභිප්‍රේරණයයි!

 

发表

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

අනුචලන ඉහළට