webForumDet fria alternativet

En error-log per domän

PHPur PHP

6 svar · 308 visningar · startad av FlashX

Medlem sedan nov. 19991 033 inlägg
Frågan#1

Enligt rekommendationen så bör man logga felmeddelanden till en fil istället för att skriva ut det direkt i webbläsaren (med tanke på sökvägar m.m. som dyker upp där)
Hur gör man enklast om man inte vill logga alla felmeddelande till en och samma fil? Eftersom servern har flera domäner så vill jag gärna skapa en fil för varje.
Man kan ju tillfälligt (per skriptbasis) ändra inställningar i ini-filen och förmodligen även detta men det vore bättre för min del om jag kunde fördefinera en mapp för ändamålet.

Medlem sedan mars 2001185 inlägg
#2

errorlog i <virtualhost> i httpd.conf om du har apache och har tillgång till den...

------------------
B44Z

Medlem sedan nov. 19991 033 inlägg
#3

Jag har olika loggfiler för varje domän i mina vrtual hosts men jag menar felmeddelandena som från PHP.
Eller menar du att man kan få felmeddelandena dit istället på något vis?
Som det är nu så klagar ju t.ex inte Apache på en misslyckad mysql-anslutning. Den skickar ju bara sidan så fort skriptet har kört och visar det som finns kvar att visa.

Medlem sedan juni 20008 205 inlägg
#4

Kan error_log vara något?

------------------
Vaddå HTLM design? Jag e UTVECKLARE för fan! /mrblonde

Medlem sedan nov. 19991 033 inlägg
#5

Det är den jag använder just nu men jag har inte fattat hur jag ska kunna få en för varje domän.

I php.ini har jag:
display_errors = Off
log_errors = On
error_log = /sökvägen/php_error.log

Det går ju att ange nya parametrar i php-skriptet för att tillfälligt ändra inställningar i ini-filen men vill helst att det styrs från ett och samma ställe.
Ska läsa igenom sidan och se om det finns någon ledtråd någonstans.

[r]
Hittade detta på en intilliggande sida:

error_log string
Name of file where script errors should be logged. If the special value syslog is used, the errors are sent to the system logger instead. On UNIX, this means syslog(3)

Är det någon som vet vad det innebär?

[Redigerat av FlashX den 06 jan 2002]

Medlem sedan juni 20008 205 inlägg
#6

En (ful) variant är ju att använda SERVER_NAME:

function vhost_log($msg){
&nbsp;&nbsp;&nbsp;&nbsp;$host = preg_replace('/^(.*?)(\..*)?$/', '$1', getenv('SERVER_NAME'));
&nbsp;&nbsp;&nbsp;&nbsp;error_log($msg, 3, '/var/php/'.$host.'.log');
}

syslog borde väl - logiskt nog - innebära att meddelandena hamnar i systemloggen. Kolla man 3 syslog om du inte redan gjort det...

------------------
Vaddå HTLM design? Jag e UTVECKLARE för fan! /mrblonde

Medlem sedan nov. 19991 033 inlägg
#7

Jo, jag kollade syslog(3) men vet inte om jag blev klokare :)
Testade lite i php.ini...
display_errors = Off
log_errors = On
;error_log = /sökvägen/php_error.log
När jag remmade error_log så verkar det som att php istället skickar felmeddelandet till den loggfil som tilldelats för varje domän i httpd.conf
Det fungerar utmärkt för min del eftersom varje användare endast har tillgång till sin egen loggfil.

Ibland är det visst enklare än man tror :)

136 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)