લેખ ડિરેક્ટરી
ગઈકાલે બપોરે, હું સર્વર પર Adminer ડેટાબેઝ મેનેજમેન્ટ ટૂલ ગોઠવી રહ્યો હતો. Adminer હલકો અને ઉપયોગમાં સરળ છે; એક જ PHP ફાઇલ કામ કરે છે, phpMyAdmin થી વિપરીત જેને ઘણી બધી ડિપેન્ડન્સીની જરૂર પડે છે. મેં સત્તાવાર વેબસાઇટ પરથી નવીનતમ સંસ્કરણ ડાઉનલોડ કર્યું, તેને સર્વર પર અપલોડ કર્યું, પરવાનગીઓ સેટ કરી અને મારું બ્રાઉઝર ખોલ્યું, તેને તપાસવા માટે તૈયાર.
પછી, બધું ખાલી થઈ ગયું.

મેં પેજ ત્રણ વાર રિફ્રેશ કર્યું, ઘણી વાર F5 દબાવવાથી મારી આંગળીઓ દુખે છે. છતાં કંઈ થયું નહીં. મેં બ્રાઉઝરના ડેવલપર ટૂલ્સ ખોલ્યા; તેમાં 200 OK એરર દેખાઈ, પણ રિસ્પોન્સ બોડી ખાલી હતી. હું સંપૂર્ણપણે સ્તબ્ધ થઈ ગયો. શું થઈ રહ્યું હતું?
મેં એક ક્ષણ માટે તેના વિશે વિચાર્યું. શું તે ફાઇલ પરવાનગીની સમસ્યા હોઈ શકે છે? મેં તપાસ કરી, અને તે 755 હતું. શું તે PHP સંસ્કરણની અસંગતતા હોઈ શકે છે? મેં તપાસ કરી, અને તે PHP 8.2 છે, જે ઠીક છે. શું ફાઇલ પોતે ખામીયુક્ત હોઈ શકે છે? મેં એક નવી નકલ ડાઉનલોડ કરી, તેને ઓવરરાઈટ કરી, અને તે હજુ પણ ખાલી છે.
કોઈ અગમ્ય કારણોસર, મેં વિચાર્યું, શા માટે મારું નામ બદલવાનો પ્રયાસ ન કરું?
મેં adminer.php નું નામ બદલીને adminer1.php કર્યું અને પેજ રિફ્રેશ કર્યું.
પ્રવેશ સફળ રહ્યો.
હું ખરેખર મૂંઝાઈ ગયો. એ જ ફાઇલ, એ જ કોડ, એ જ સર્વર, અને તે ફક્ત નામ બદલવાથી જ સુલભ છે? આ કેવો રહસ્યમય તર્ક છે?
ખાલી adminer.php ફાઇલનો મુદ્દો
પછી મને સમજાયું કે આ કોઈ પ્રકારની અંધશ્રદ્ધા નહોતી; તે PHP કેશીંગ હતી જે સમસ્યાનું કારણ બની રહી હતી.
OPcache, જે Opcode Cache માટે ટૂંકું નામ છે, તે PHP માટે એક પ્રદર્શન ઑપ્ટિમાઇઝેશન એક્સટેન્શન છે. તેનો સિદ્ધાંત સરળ છે: PHP એક અર્થઘટન ભાષા છે, અને દરેક વિનંતી માટે અમલ પહેલાં PHP કોડને opcode માં કમ્પાઇલ કરવાની જરૂર છે. OPcache સંકલિત પરિણામને મેમરીમાં કેશ કરે છે, જે અનુગામી વિનંતીઓને પુનઃસંકલન વિના સીધા કેશ્ડ સંસ્કરણનો ઉપયોગ કરવાની મંજૂરી આપે છે, જેના પરિણામે નોંધપાત્ર પ્રદર્શન સુધારણા થાય છે.
પણ સમસ્યા ત્યાં જ છે.
પહેલાં, adminer.php "File not found" (મેં ખોટી ફાઇલ અપલોડ કરી હતી) દર્શાવતું હતું, અને OPcache એ ખોટી સામગ્રીના સંકલિત પરિણામને કેશ કર્યું હતું. પછીથી, મેં adminer.php ને સાચા કોડથી બદલ્યું, પરંતુ OPcache એ તેને અવગણ્યું અને મેમરીમાંથી જૂનું કેશ વાંચવાનું ચાલુ રાખ્યું, જેના પરિણામે ખાલી પૃષ્ઠ અથવા જૂનો ભૂલ સંદેશ આવ્યો.
જ્યારે તમે તેનું નામ બદલીને adminer1.php કરો છો, ત્યારે તે OPcache માટે સંપૂર્ણપણે નવો ફાઇલ પાથ બની જાય છે, અને તે ફરીથી લોડ થશે અને તેને યોગ્ય રીતે ઉકેલશે.
એવું લાગે છે કે તમે પહેલેથી જ એક નવું પુસ્તક ખરીદી લીધું છે, પરંતુ પુસ્તકાલયના ઇન્ડેક્સ કાર્ડ પર હજુ પણ જૂના પુસ્તકનો કોલ નંબર છે. જ્યારે તમે તેને શેલ્ફ પર શોધવા જાઓ છો, ત્યારે અલબત્ત, તે ખાલી હોય છે. પરંતુ જો તમે પુસ્તકનું શીર્ષક બદલો છો, તો પુસ્તકાલય તમારા માટે એક નવું ઇન્ડેક્સ કાર્ડ બનાવશે, અને પછી તમે તેને શોધી શકશો.
કારણ ૧: 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 = બંધ). ઉત્પાદન વાતાવરણમાં, PHP મૂળભૂત રીતે ભૂલોને છુપાવે છે, ખાલી પૃષ્ઠ પ્રદર્શિત કરે છે. જો તમારી એન્ટ્રી ફાઇલ (દા.ત., index.php) "./adminer.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 તપાસો.
તે તમને જવાબ કહેશે.
તમે અત્યાર સુધી વાંચ્યું હોવાથી, જો તમને તે મદદરૂપ લાગ્યું, તો કૃપા કરીને તેને લાઈક અને શેર કરો. જો તમે પહેલા અપડેટ્સ મેળવવા માંગતા હો, તો તમે મને ફોલો પણ કરી શકો છો!
મારો લેખ વાંચવા બદલ આભાર. ફરી મળીશું.
આશા છે કે, ચેન વેઇલિયાંગના બ્લોગ ( https://www.chenweiliang.com/ ) પર શેર કરાયેલ લેખ "Adminer.php ઍક્સેસ ખાલી? નામ બદલવું સામાન્ય રીતે કામ કરે છે? કારણોનું વિશ્લેષણ અને સમસ્યાને સંપૂર્ણપણે ઉકેલવા માટેના 3 પગલાં" તમારા માટે મદદરૂપ થશે.
આ લેખની લિંક શેર કરવા માટે નિઃસંકોચ રહો: https://www.chenweiliang.com/cwl-34403.html
