Christoph Schnauß: mit PHP apache log-file auslesen?

Beitrag lesen

hallo,

<?php
$handle = fopen ("/var/log/apache/access.log", "r");
?>

Auch PHP kann normalerweise nicht auf _beliebige_ Verzeichnisse des Server-Rechners zugreifen. Es wäre eine enorme Sicherheitslücke,wenn das so einfach ginge. Alles, was _unterhalb_ der DocumentRoot des Apache liegt, ist natürlich zugänglich. Aber /var/log liegt weit _außerhalb_ (mal ganz abgesehen davon, daß die Protokolldatei "access_log" heißen dürfte und es sich offenbar um einen in Ehren ergrauten Apache 1.3.x handelt).

Du kannst allerdings versuchen, mit einem SymLink zu arbeiten. Wenn die DocumentRoot /var/www/localhost/htdocs ist, könnte das mit
  cd /var/www/localhost/htdocs
  ln -s /var/log/apache/access_log access.log
probiert werden. Dann liegt ein Symlink innerhalb der DocumentRoot, und Apache muß lediglich mit der Option "FollowSymLinks" instruiert werden, daß solche Symlinks benutzt werden dürfen.

Eine weitere Möglichkeit besteht darin, die php.ini wunschgemäß zu bearbeiten.

Besonders glücklich ist das allerdings nicht, und ob es funktioniert, ist fraglich und sowohl vom Rechnersystem (welches Linux ist da im Einsatz?) wie auch von der Apache-Version und der PHP-Version abhängig. Und du solltest eventuell erklären, was du denn aus dem Zugriffsprotokoll mit PHP auslesen möchtest und ob es nicht Alternativen außerhalb von PHP gibt.

Grüße aus Berlin

Christoph S.

--
Visitenkarte
ss:| zu:) ls:& fo:) va:) sh:| rl:|