CodeIgniter - klaidų rodymas ir skirtingos aplinkos

2014-10-15

Klaidų rodymas naršyklėje PHP kalboje yra labai įdomi tema - yra įvairių klaidų "sunkumo" tipų (fatal, warning, notice, parse ir kt.), už jų rodymo nustatymus atsakinga funkcija error_reporting(). Bet dažniausiai būna poreikis rodyti klaidas lokalioje versijoje, ir slėpti jas nuo realių lankytojų "production" versijoje. Pažiūrėkime, kaip paprastai tai galima nustatyti CodeIgniter frameworke.

Viskas yra daroma pagrindinio katalogo faile index.php. Visa procedūra susideda iš dviejų dalių - štai kodas iš naujausios CodeIgniter versijos:

switch (ENVIRONMENT)
{
  case 'development':
    error_reporting(-1);
    ini_set('display_errors', 1);
  break;

  case 'testing':
  case 'production':
    ini_set('display_errors', 0); ...

Kaip matote, turime konstantą ENVIRONMENT, pagal kurią ir galime nustatyti, kaip rodyti klaidas. Kiek aukščiau tame pačiame index.php faile ta konstanta yra nustatoma pagal aplinkos kintamuosius:

define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');

Tačiau jei jums toks variantas nepatogus arba tiesiog neturite prieigos prie serverio aplinkos kintamųjų, tai galite tiesiog naudoti IP adreso patikrinimą - iš kintamojo $_SERVER['REMOTE_ADDR']. Jei tai lokalus adresas - reiškia aplinka yra 'development' ir klaidas rodyti reikėtų.

Bendras patarimas - savo aplinkoje rodykite absoliučiai visas klaidas, įskaitant Warning ir Notice, nesistenkite jų dirbtinai atsikratyti, jos vis tiek bus įrašomos į .log failus, kurie po to išsipūs nežmoniškai. Tuo labiau, kad kai kurie šiuolaikiniai framework'ai jau nebepraleidžia tokių "nesvarbių" klaidų, ir jei pvz bandote išvesti ekraną kokį nors neegzistuojantį ar neapibrėžtą kintamąjį, tai toliau skripto vykdyti tiesiog neleis.


(Mailchimp sistema jums atsiųs patvirtinimo laišką, nepamirškite patvirtinti)


Komentarų: 0




Naujausi PHPpamokos.lt online-kursai

23 EUR (79.41 Lt)
23 EUR (79.41 Lt)
23 EUR (79.41 Lt)
Nuo Laravel 4 prie Laravel 5
Povilas Korop

23 EUR (79.41 Lt)
MySQL: nuo pradmenų iki optimizavimo
Povilas Korop
23 EUR (79.41 Lt)
OOP: objektinis programavimas su PHP
Povilas Korop
23 EUR (79.41 Lt)
Kaip kurti Wordpress pluginus?
Arūnas Liuiza

23 EUR (79.41 Lt)
PHP online-kursas pradedantiesiems
Povilas Korop