Virheiden loggaus

Yritän saada PHP-skriptiä tallentamaan mahdolliset virheet lokiin:

ini_set("error_log","virheloki.txt");
ini_set("log_errors",TRUE);
ini_set("error_reporting",E_ALL);

"Run-time warnings" kyllä menevät lokiin, mutta "Compile-time parse errors" eivät mene. Vaikka tuo E_ALL tarkoittaa manuaalien mukaan, että kaikkien virheiden pitäisi mennä lokiin. Sen tilalle voi vaihtaa myös E_PARSE, jolloin vain "Compile-time parse errors" pitäisi mennä lokiin, mutta ei auta.

Jos tuossa on joku sellainen logiikka, että "Compile-time parse errors" eivät voi mennä lokiin, koska kääntämisen aikana skriptiä ei vielä suoriteta ollenkaan, niin miksi tuo E_PARSE on sitten edes olemassa vaihtoehtona?

Kaikkea olen kokeillut ja googlettanut, mutta en tajua, mikä tässä mättää.
4286
Äänestä

Muut lukivat myös

Vastaukset 4

Vanhimmat

"Jos tuossa on joku sellainen logiikka, että "Compile-time parse errors" eivät voi mennä lokiin, koska kääntämisen aikana skriptiä ei vielä suoriteta ollenkaan, niin miksi tuo E_PARSE on sitten edes olemassa vaihtoehtona?"

Olet oikeessa, kun tulkkaamisen aikana havaitaan parse-error niin tulkki tuhoaa kaiken sisällön myös ini_set määritykset.

Lisääppäs .htaccess tiedostoon tämmöinen
php_value error_log virheloki.txt

Tuolloin määritys asetetaan voimaan ennen tulkkaamista ja parse-erroritkin menee logiin, ja muutenkin tämmöiset yleisasetukset kannattaa muuttaa .htaccesiin tai php.inii jos sinne pääsee. ini_settiä vain jos tarttetaan yksittäisille scripteille eri asetuksia.

Äänestä
  • Kiitokset vastauksesta. Ihmettelenpä vaan, miksi

    ini_set ("error_reporting", E_PARSE);

    on sitten edes olemassa ja kerrottu kaikissa PHP-manuaaleissa, kun se ei kerran voi toimia ollenkaan?

    Eikä näytä tuo .htaccess -konstikaan olevan ihan noin yksinkertainen. Ohjeellasi sain aikaiseksi vain "Internal Server Error":in. Googlettamalla sitten selviää, mitä kaikkea muuta sen toimimiseksi pitäisi tehdä, eikä jonkun muun ylläpitämässä palvelimessa taida kaikkea edes pystyä tekemään. Ihmeen vaikeaksi on pitänyt tuokin asia tehdä.

    Äänestä

  • phphp kirjoitti:

    Kiitokset vastauksesta. Ihmettelenpä vaan, miksi

    ini_set ("error_reporting", E_PARSE);

    on sitten edes olemassa ja kerrottu kaikissa PHP-manuaaleissa, kun se ei kerran voi toimia ollenkaan?

    Eikä näytä tuo .htaccess -konstikaan olevan ihan noin yksinkertainen. Ohjeellasi sain aikaiseksi vain "Internal Server Error":in. Googlettamalla sitten selviää, mitä kaikkea muuta sen toimimiseksi pitäisi tehdä, eikä jonkun muun ylläpitämässä palvelimessa taida kaikkea edes pystyä tekemään. Ihmeen vaikeaksi on pitänyt tuokin asia tehdä.

    "Ihmettelenpä vaan, miksi on sitten edes olemassa ja kerrottu kaikissa PHP-manuaaleissa, kun se ei kerran voi toimia ollenkaan?"

    Kylhän nuo toimii php.inin jne... kaut, tosin äkkiseltään en huomannut mitään tietoa tuossa yhteydessä mitkä toimii ja mitkä ei. http://fi2.php.net/manual/en/function.set-error-handler.php Mainitaan jotain liekö samat.


    "Eikä näytä tuo .htaccess -konstikaan olevan ihan noin yksinkertainen. Ohjeellasi sain aikaiseksi vain "Internal Server Error":in."

    Hmmm.... Kokeilin tuota omalla palvelimellani niin ongelmitta toimii. Tuo Internal Server Error viittaa että olet tehnyt .htaccesiin jonkun virheen. Kokeileppas .htaccess tiedostoon

    php_value error_log "virheloki.txt"

    Ja koitappas luoda virheloki.txt samaan hakemistoon missä tuo .htaccess on ja antaa sille tarvittavat oikeudet.


    "Googlettamalla sitten selviää, mitä kaikkea muuta sen toimimiseksi pitäisi tehdä, eikä jonkun muun ylläpitämässä palvelimessa taida kaikkea edes pystyä tekemään."

    Ilmeisesti löysit ohjeita miten palvelinohjelmistossa laitetaan .htaccess toimimaan?
    Ei sinun tartte noista ohjeista mitään välittää nuo asetukset laittaa kuntoon palvelimen pitäjä. Sinulla joko toimii .htaccess jutut tai sit ei.

    Ja yleensähän palvelinohjelmisto logittaa virheet ja nämä näkyy saattaa näkyä jossain hakemistossa. Mut noihin logeihin tulee muutkin kuin PHP scriptien virheet.

    Äänestä

  • --------- kirjoitti:

    "Ihmettelenpä vaan, miksi on sitten edes olemassa ja kerrottu kaikissa PHP-manuaaleissa, kun se ei kerran voi toimia ollenkaan?"

    Kylhän nuo toimii php.inin jne... kaut, tosin äkkiseltään en huomannut mitään tietoa tuossa yhteydessä mitkä toimii ja mitkä ei. http://fi2.php.net/manual/en/function.set-error-handler.php Mainitaan jotain liekö samat.


    "Eikä näytä tuo .htaccess -konstikaan olevan ihan noin yksinkertainen. Ohjeellasi sain aikaiseksi vain "Internal Server Error":in."

    Hmmm.... Kokeilin tuota omalla palvelimellani niin ongelmitta toimii. Tuo Internal Server Error viittaa että olet tehnyt .htaccesiin jonkun virheen. Kokeileppas .htaccess tiedostoon

    php_value error_log "virheloki.txt"

    Ja koitappas luoda virheloki.txt samaan hakemistoon missä tuo .htaccess on ja antaa sille tarvittavat oikeudet.


    "Googlettamalla sitten selviää, mitä kaikkea muuta sen toimimiseksi pitäisi tehdä, eikä jonkun muun ylläpitämässä palvelimessa taida kaikkea edes pystyä tekemään."

    Ilmeisesti löysit ohjeita miten palvelinohjelmistossa laitetaan .htaccess toimimaan?
    Ei sinun tartte noista ohjeista mitään välittää nuo asetukset laittaa kuntoon palvelimen pitäjä. Sinulla joko toimii .htaccess jutut tai sit ei.

    Ja yleensähän palvelinohjelmisto logittaa virheet ja nämä näkyy saattaa näkyä jossain hakemistossa. Mut noihin logeihin tulee muutkin kuin PHP scriptien virheet.

    Ei auttanut tiedoston nimen laittaminen lainausmerkkeihin. Tein siis .htaccess-tiedoston, johon laitoin vain tuon neuvomasi rivin, ja sijoitin sen samaan hakemistoon, jossa ajamani skripti sijaitsee.

    .htaccess on jossain määrin tuttu juttu, mutta kun toimin toisen ylläpitämällä palvelimella, niin en taida päästä muokkaamaan sen php.ini:ä ja vastaavia, jota googletukseni mukaan tuon toimimaan saaminen edellyttäisi. Enkä taida päästä käsiksi myöskään palvelimen virhelokiin.

    Äänestä

Kommentoi aloitusta


phphp kirjoitti:

Yritän saada PHP-skriptiä tallentamaan mahdolliset virheet lokiin:

ini_set("error_log","virheloki.txt");
ini_set("log_errors",TRUE);
ini_set("error_reporting",E_ALL);

"Run-time warnings" kyllä menevät lokiin, mutta "Compile-time parse errors" eivät mene. Vaikka tuo E_ALL tarkoittaa manuaalien mukaan, että kaikkien virheiden pitäisi mennä lokiin. Sen tilalle voi vaihtaa myös E_PARSE, jolloin vain "Compile-time parse errors" pitäisi mennä lokiin, mutta ei auta.

Jos tuossa on joku sellainen logiikka, että "Compile-time parse errors" eivät voi mennä lokiin, koska kääntämisen aikana skriptiä ei vielä suoriteta ollenkaan, niin miksi tuo E_PARSE on sitten edes olemassa vaihtoehtona?

Kaikkea olen kokeillut ja googlettanut, mutta en tajua, mikä tässä mättää.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu