vhost eigene error_log

Lord_Icon

Member
Hi,

ich täte gern ein EIGENES error+access Log für mein Account.

Ergo hab ich die vhost mit folgende 2 Zeilen erweitert:

Code:
    ErrorLog /srv/www/htdocs/ks014/html/logs/error_log
    CustomLog /srv/www/htdocs/ks014/html/logs/access_log common

DAS klappt soweit auch... allerdings hab ich damit nur die globale Error Log Einstellung überschrieben. Sprich = ich hab jetzt alle Logs von meinen Domains in dieser Datei.

Hat einer eine Idee ?

Oder aber = vllt. kann ja einer mal seine vhost posten, wo das drin ist.
Dankeeeeeee...
 
jau... hab ich grad hinbekommen.

mein erster Fehler war, das ich Error_log falsch eingebunden habe...
mein zweiter war dann, das ich mir die Datei nicht genau angeschaut habe.


So klappt es schon mal ganz gut:
Code:
<VirtualHost <IP_addy>:80>
 ServerName "domain.de"

 DocumentRoot "/srv/www/htdocs/ks014/html"

 CustomLog            /srv/www/htdocs/ks014/html/logs/access_log common
 php_value error_log "/srv/www/htdocs/ks014/html/logs/error_log"

</VirtualHost>

Hierzu mal 2 Fragen:
Wie kann ich ein Fehler erzeugen, sodass sich die error_log füllt.

Hab jetzt schon mal ne Datei angelegt und:
<?php
echo test
?>
reingepackt (also ohne abschließendes ;) => sollte ja ein php Fehler erzeugen.

Leider füllt bzw. erstellt sich die Datei nicht.



Frage 2:
MEin Ziel ist es eigendlich die Logs von Mail/Mail_error/Mail_info zu separieren.
Das ganze läuft bei mir über Dovecot. Bekomme ich das auch über die vhost geregelt oder muß ich hier direkt in dovecot rein ?
 
Last edited by a moderator:
Du musst unterscheiden:

Es gibt ein ACCESS-Log für den Apache - dort landen alle Hits.

Es gibt ein ERROR-Log für den Apache - dort werden Fehler und Warnings protokolliert.

Es gibt ein ERROR-Log für PHP - dort hinein schreibt PHP.

Alle 3 Dateien lassen sich für jeden vHost definieren, so hat man immer schön die Zuordnung zu den Domains.

Testen kannst Du wie folgt für den Apache:
-------------------------------------------------

Konsole: tail -fn100 /srv/www/htdocs/ks014/html/logs/apache_error.log

Dann im Browser eingeben deinedomain.de/murkurksmichGibtESGArnCHT

Der Apache schmeisst 'nen 404 und das siehst Du live in der Shell.


Testen kannst Du wie folgt für PHP:
-------------------------------------------------

Überprüfe vorher, wie und was PHP loggt! Es ist die Frage, ob php_value-Direktiven überhaupt erlaubt sind?! Überprüfen kannst Du die Einstellungen in der php.ini (für den vHost oder global). Dann Dein Beispiel ausführen. Auch hier wieder live mit tail schauen, was passiert:

Konsole: tail -fn100 /srv/www/htdocs/ks014/html/logs/php5.log

Ich würde auf einen Livesystem die PHP-Direktive "Display-Errors" abschalten und nur in die Datei loggen. Auch finde ich den Ort der Log-Files (innerhalb des Webroots) nicht gelungen. Wenn es für Kundenzugriffe notwendig ist, kann man denen auch 'nen FTP Zugriff auf 2 Ebenen (Logs + Webroot) geben.
 
Last edited by a moderator:
moin dev,

also 2 von 3 Dinge konnte ich umsetzen:

So sieht meine vhost nun aus: (complet)

Code:
 <Directory "/srv/www/htdocs/ks014/html">
  AllowOverride All
  Options  +FollowSymLinks  +SymLinksIfOwnerMatch
   <IfModule mod_access.c>
    Allow from all
   </IfModule>
 </Directory>

 <VirtualHost 123.123.123.123:80>
 ServerName "meine_domain.de"
 ServerAlias ks014.provider_interne_domain.de www.meine_domain.de

 SuexecUserGroup ks014 ks014
 DocumentRoot "/srv/www/htdocs/ks014/html"
 ScriptAlias /cgi-bin/ /srv/www/htdocs/ks014/html/cgi-bin/
 <IfModule mod_python.c>
  <Files ~ "\.py$">
   AddHandler python-program .py
   PythonHandler mod_python.publisher
  </Files>
 </IfModule>

 <Files ~ "\.shtml$">
 deny from all
 </Files>

 php_admin_flag safe_mode On
 php_admin_value open_basedir /srv/www/htdocs/ks014/:/usr/share/php
 php_admin_value session.save_path /srv/www/htdocs/ks014/temp
 php_admin_value upload_tmp_dir /srv/www/htdocs/ks014/temp
 php_admin_value safe_mode_exec_dir /srv/www/htdocs/ks014/temp
 php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@meine_domain.de"
 php_admin_flag register_globals off

 php_value error_log "/srv/www/htdocs/ks014/logs/PHP_error_log"

 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\""
 TransferLog /srv/www/htdocs/ks014/logs/access_log

</VirtualHost>

Ich hab nun folgende Datein:

Code:
-rw-r--r-- 1 root   root 1584  9. Sep 15:04 access_log
-rw-r--r-- 1 wwwrun www   122  9. Sep 15:04 PHP_error_log

Auch finde ich den Ort der Log-Files (innerhalb des Webroots) nicht gelungen.
Dem stimme ich zu. Das ganze ist zwar erstmal nur produktiv... aber getreu dem Motto "was du heute kannst erledigen..."
Die Logs liegen nun nicht im Web-Documenten-Root sondern eine Ebene höher, wo ich nur per FTP zugreifen kann. Der Indiander kommt da nicht hin.


Warum ich aber Poste:
Du hast was von 3 Datein geschrieben.
Apache-Access => works
PHP-Error => works
Apache-Error = :confused:

Hab schon Tante Google bemüht... aber anscheind verwende ich die falschen Such-Parameter.. denn ich find da nix... und das was ich finde klappt nicht.
Hast du n Code Fragement für mich ?
 
done:

Code:
 php_value error_log "/srv/www/htdocs/ks014/logs/PHP_error_log"
 ErrorLog /srv/www/htdocs/ks014/logs/APACHE_error_log

 #Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
 #LogLevel debug

 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\""
 TransferLog /srv/www/htdocs/ks014/logs/APACHE_access_log
 
Sehr gut! Freut mich, dass nun alles funktioniert.

Allerdings kollidieren diese beiden Direktiven:

Code:
...
php_admin_flag safe_mode On
... 
php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@meine_domain.de"
...


Ist der safe_mode ON, kann PHP keine E-Mails mit dem -f Parameter verschicken. Das erzeugt u. U. Probleme, selber schon erlebt.

Ich zitiere mal die Zend-Doku:

Safe mode restrictions
The optional additional parameters will be cause the mail() function to fail if PHP is running in safe mode.

-f ist ein "additional Parameter".

Quelle: http://framework.zend.com/manual/en/zend.mail.html

Ich habe den safe_mode ausgestellt, zumal der in PHP 6 weg ist und open_basedir die bessere Alternative ist...
 
okayyyy...

Aber da scheint sich mein Indianer etwas freundlicher zu Verhalten... denn ein Fehler bezüglich des Email Versand hatte ich bisher nicht.

Wie äußert sich denn dieser ?
Wird die Mail nicht verschickt?


Sehr gut! Freut mich, dass nun alles funktioniert.

Na 2 Dinge hab ich noch, wo mir die Apache Doku noch im Dunkel läßt.

Damit ich überhaupt erstmal n positives Ergebiniss bekomme, habe ich:
AllowOverride All
gesetzt.

Dies soll in Produktiver Umgebung aber nicht gestattet sein.
AllowOverride none

Würde ich bevorzugen... allerdings sagt die Doku dann, das er eine .htaccess komplett ignoriert.
ModRewrite würde ich aber zulassen wollen. Nur unter was fällt das ganze ?

http://httpd.apache.org/docs/2.0/mod/core.html#allowoverride
=> ist recht kurzgehalten an Informationen... hat einer andere Dokus außer die Offizellen?


Und die andere Sache ist Suhousing... da hab ich mcih aber noch nicht belesen. Das wird sicherlich schwieriger, da es sich ja um ein Plugin handelt.
Mal schaun, wie ich da jedem Account eine eigene Log verpassen kann. (Ideen sind aber gern gesehen :D )
 
Wie äußert sich denn dieser ?
Als Eintrag in den Mail Logs oder dem Error Log von PHP, falls vorhanden.
Wird die Mail nicht verschickt?
Möglicherweise.
Was findest du daran denn zu knapp? Ist doch alles 1A erklärt. Und welcher Direktiventyp via AllowOverride erlaubt werden muss, steht eindeutig in der Dokumentation von mod_rewrite.
 
Doch, die Mails werden schon verschickt, allerdings wird kein korrekter Absender angegeben, sondern ein Absender aus dem Hostname und dem vHost-Name erzeugt, also

vhost@host.domain.tld

So war es jedenfalls bei mir.

Das treibt den Spam-Score der Mail hoch und macht das beantworten schwierig.

AllowOverride FileInfo löst Dein htaccess-Problem.

Du kannst die htaccess-Direktive auch direkt im vHost-definieren (Rewrites z. B.). Dann muss nichts freigegeben werden. Und die Performance steigt, da der Apache nicht in jedem Ordner eine htaccess sucht.
 
Back
Top