SiteSolvo Nemokama patikra
Nemokama patikra

OpenCart klaida 500 ir baltas ekranas: ką patikrinti

Autorius: Kernius Zigmantas · Paskelbta · Atnaujinta

Klaida 500 (angl. „Internal Server Error“) reiškia, kad serveris negalėjo įvykdyti užklausos, bet nenurodo, kodėl. Priežastį galima rasti klaidų žurnale, todėl pradėkite nuo jo, o ne nuo spėliojimo.

Šiame gide paaiškinu, kur ieškoti žurnalo, ką tikrinti toliau ir kada verta kreiptis pagalbos. Jis skirtas OpenCart 1.5, 2.x ir 3.0 versijoms.

Prašyti nemokamos patikros

Kur rasti OpenCart klaidų žurnalą

Žurnalas yra tekstinis failas, į kurį užrašomos klaidos. Jį galite atidaryti dviem būdais.

Administravimo skydelyje

Jei administravimo skydelis atsidaro, ieškokite punkto „Error Logs“. OpenCart 3.0 jis yra meniu System → Maintenance, 2.1–2.3 versijose – System → Tools, 2.0 – aukščiausio lygio meniu Tools, o 1.5 – meniu System.

Per FTP ar prieglobos failų tvarkyklę

Aplanko kelią rodo eilutė DIR_LOGS faile config.php. Numatytoji vieta: 1.5.6 ir 2.0.3 – system/logs/; 2.1, 2.2, 2.3 ir 3.0 – system/storage/logs/. Failo pavadinimą nurodo nustatymas „Error Log Filename“: 1.5.6 versijoje tai error.txt, 2.0 ir 3.0 – error.log.

Nustatymai, nuo kurių priklauso žurnalas

Administravimo skydelyje atidarykite System → Settings, redaguokite parduotuvę ir pasirinkite skirtuką „Server“. Ten yra „Log Errors“, „Display Errors“ ir „Error Log Filename“. Po standartinio diegimo pirmieji du nustatymai būna įjungti. „Log Errors“ palikite įjungtą. „Display Errors“ rodo klaidas lankytojams, todėl gyvoje parduotuvėje jį išjunkite: PHP dokumentacija įspėja, kad klaidų rodymas viešoje svetainėje kelia saugumo riziką.

Kai OpenCart žurnalas tuščias

OpenCart žurnale atsiranda tik klaidos, kurias perima jo paties klaidų apdorojimo funkcija. PHP dokumentacija nurodo, kad tokia funkcija negali perimti sunkiausių klaidų, pavyzdžiui E_ERROR ir E_PARSE. Todėl priežastį gali parodyti PHP ar serverio žurnalas. Jo vieta priklauso nuo prieglobos: ieškokite prieglobos valdymo skydelio skilties „Logs“ ar „Error log“ arba paprašykite pagalbos tarnybos atsiųsti paskutines klaidas.

Ką tikrinti toliau

Su žurnalo eilute lengviau pasirinkti, kurį punktą tikrinti. Prieš keisdami bet kurį failą, padarykite jo atsarginę kopiją. OpenCart branduolio failų nekeiskite neturėdami visos svetainės ir duomenų bazės atsarginės kopijos.

1. PHP versija

Jei klaida atsirado be Jūsų veiksmų, pasitikrinkite, ar prieglobos teikėjas nepakeitė PHP versijos. Pavyzdžiui OpenCart 1.5.6 su DB_DRIVER reikšme mysql kviečia mysql_* funkcijas, o PHP 7.0 tą plėtinį pašalino. PHP ar serverio žurnale tada matytumėte „Call to undefined function mysql_connect()“. Išeitis – grąžinti senesnę PHP versiją, jei prieglobos valdymo skydelis tai leidžia, arba atnaujinti parduotuvę.

2. Failų ir aplankų teisės

OpenCart turi rašyti į žurnalų ir talpyklos aplankus, o nuo 2.0 versijos – ir į modifikacijų bei įkėlimų aplankus. Jie surašyti faile config.php: DIR_LOGS, DIR_CACHE, DIR_DOWNLOAD, o nuo 2.0 – dar DIR_MODIFICATION ir DIR_UPLOAD. Teisės ar failų savininkas gali pasikeisti perkėlus parduotuvę arba atkūrus ją iš atsarginės kopijos. Failų tvarkyklėje palyginkite sugedusį aplanką su veikiančiu. Nenustatykite visiems failams teisių 777 – paprašykite prieglobos nurodyti tinkamas teises.

3. Klaida 403

Pagal MDN, 403 reiškia, kad serveris užklausą suprato, bet atsisako ją vykdyti. Jei ji atsirado po perkėlimo ar atnaujinimo, tikrinkite failų teises ir serverio taisykles, tarp jų .htaccess. Jei administravimo skydelyje matote „You do not have permission to modify…“, tai ne serverio 403, o OpenCart naudotojų grupės teisės (System → Users → User Groups).

4. .htaccess ir SEO nuorodos

OpenCart pateikia failą .htaccess.txt. SEO nuorodoms jį reikia pervadinti į .htaccess, Apache turi turėti mod_rewrite, o nustatyme „Use SEO URLs“ turi būti pažymėta. Jei parduotuvė ne šakniniame aplanke, eilutėje RewriteBase nurodykite aplanko kelią.

Apache dokumentacija nurodo: jei .htaccess turi neleidžiamą direktyvą ar sintaksės klaidą, serveris grąžina klaidą 500, o priežastis užrašoma serverio žurnale. Greita patikra: padarykite failo atsarginę kopiją, pervadinkite patį .htaccess ir patikrinkite, ar klaida dingo. SEO nuorodos tuo metu neveiks.

5. PHP atminties riba

memory_limit yra didžiausias atminties kiekis, kurį gali naudoti vienas PHP scenarijus. Jį viršijus, PHP sustabdo darbą ir praneša „Allowed memory size of … bytes exhausted“. Tai sunki klaida, todėl ieškokite jos PHP ar serverio žurnale. Ribą keiskite prieglobos PHP nustatymuose arba php.ini. Eilutė php_value faile .htaccess veikia tik kai PHP veikia kaip Apache modulis. Kitais atvejais Apache gali jos neatpažinti ir grąžinti klaidą 500.

6. Neseniai įdiegtas papildinys ar modifikacija

Jei klaida atsirado po papildinio diegimo, pirmiausia įtarkite jį. OCMOD modifikacijas (nuo OpenCart 2.0) valdo Extensions → Modifications. Įjungus, išjungus ar ištrynus modifikaciją reikia paspausti atnaujinimo (Refresh) mygtuką, nes OpenCart naudoja pakeistų failų kopijas, kurias pats sukuria ir laiko aplanke DIR_MODIFICATION. Kai kurie papildiniai naudoja vQmod – atskirą įrankį, kuris nėra OpenCart dalis. Žurnale nurodytas failo kelias gali parodyti, kuris papildinys sukėlė klaidą.

7. Saugyklos aplankas ir keliai

Abu failai, config.php ir admin/config.php, saugo kelius į aplankus. OpenCart 3.0 DIR_STORAGE pagal numatytuosius nustatymus rodo į system/storage/, o administravimo skydelis siūlo šį aplanką perkelti už viešo aplanko ribų ir tada pakeičia šią reikšmę. Perkėlus parduotuvę į kitą aplanką ar prieglobą, seni keliai gali rodyti į neegzistuojantį aplanką, o OpenCart tada negali rašyti žurnalų ir talpyklos.

8. ZIP plėtinio klaida

OpenCart 3.0 diegimo programa rodo „Warning: ZIP extension needs to be loaded for OpenCart to work!“ Tai reiškia, kad serverio PHP neturi įjungto zip plėtinio. PHP dokumentacija pateikia jį kaip atskirą plėtinį, todėl įjungti jį gali prieglobos teikėjas. Pranešimas „Zip file could not be opened!“ papildinio diegimo metu yra kitas atvejis: OpenCart 3.0 nepavyko atidaryti įkelto archyvo.

Kada kreiptis pagalbos

Rašykite man, jei:

  • parduotuvė pirkėjams nepasiekiama;
  • neturite prieigos prie klaidų žurnalų;
  • klaida atsirado po OpenCart, PHP ar papildinio atnaujinimo;
  • nesate tikri, ar saugu keisti failą.

Nemokamai peržiūriu parduotuvę ir raštu nurodau, ką radau ir ką siūlau daryti. Prieš ką nors keisdamas padarau svetainės ir duomenų bazės atsarginę kopiją. Iš anksto nežadu, kad pavyks sutvarkyti; pasiūlymą pateiksiu po patikros. Daugiau – puslapiuose Svetainių klaidų taisymas ir OpenCart programuotojas.

Klausimai ir atsakymai

Ką reiškia OpenCart „Internal Server Error“?

Tai bendras serverio pranešimas, kad įvyko netikėta klaida, o tikslesnės priežasties jis nenurodo. Priežasties ieškokite OpenCart arba serverio klaidų žurnale.

Kodėl OpenCart rodo baltą ekraną, o klaidų žurnalas tuščias?

OpenCart žurnale užrašomos tik klaidos, kurias perima jo klaidų apdorojimo funkcija, o sunkiausių PHP klaidų ji neperima. Tokiu atveju žiūrėkite PHP ar serverio žurnalą prieglobos valdymo skydelyje arba paprašykite prieglobos pagalbos tarnybos jį atsiųsti.

Ką reiškia OpenCart klaida 403 Forbidden?

Serveris užklausą suprato, bet atsisako ją vykdyti. Tikrinkite failų ir aplankų teises bei serverio taisykles, pavyzdžiui .htaccess. Pranešimas „You do not have permission to modify“ administravimo skydelyje rodo, kad trūksta OpenCart naudotojų grupės teisių, o ne kad įvyko serverio klaida.

Ką reiškia OpenCart ZIP plėtinio klaida?

Serverio PHP neturi įjungto zip plėtinio, kurio reikia OpenCart 3.0 diegimo programai. Plėtinį įjungia prieglobos teikėjas, todėl jo paprašykite.

Nemokama svetainės patikra

Atsiųskite parduotuvės adresą ir trumpai aprašykite, ką matote. Peržiūrėsiu parduotuvę ir raštu nurodysiu, ką radau.

Prašyti nemokamos patikros