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ää.
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ää.
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.
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.
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.