UA von bestimmter IP nicht Loggen

Alles, was den Apache betrifft, kann hier besprochen werden.

UA von bestimmter IP nicht Loggen

Postby Wuppi » 18. June 2006 02:23

Hi

folgende Situation:
Ich hab auf meinem Home-Webserver 2 Webscripte laufen. Das eine könnte ich bequem per cmd php.exe starten ... das 2. hat leider div. mySQL-Aufrufe wo die php.exe dann versagt. Aus diesem Grund rufe ich die beiden Scripte (bzw. nur ein Aufruf via "startscript") via wget im 10min Takt auf. Dieser Aufruf bläht mit der Zeit mein Log ungemein auf :(

Ich müsste dem Apache jetzt also sagen das er:
Keine Logeinträge macht wenn
IP 1.2.3.4 (immer gleich) mit dem Useragent "Wget" die Datei "blabla.php" aufruft.
Am sinnvollsten wäre eine Kombi mit IP und Useragent oder IP und Datei. Wget soll generell schon geloggt werden (wenn er von außen kommt oder er was anderes "zieht"). Zur Not wäre es auch eine Option den Aufruf einer bestimmten Datei nicht mehr zu loggen - da ich hier ggf. paar Scripte umbauen muß, würd ich das wirklich als Notlösung sehen.

Wie bewerkstellige ich das jetzt beim Apache (2.0.55)?

Google hat mir 2 Seiten mit ähnlicher Fragestellung gegeben aber keine Antwort darauf :( Ansonsten hab ich nur einen Verweis auf SetInv gefunden - der mir aber nicht sonderlich weiterhilft.

Gruß
Wuppi
Wuppi
 
Posts: 25
Joined: 11. August 2005 00:42

Postby Wuppi » 20. June 2006 10:24

Hi

keiner eine idee?

Gruß
Wuppi
Wuppi
 
Posts: 25
Joined: 11. August 2005 00:42

Postby Wiedmann » 20. June 2006 11:28

das 2. hat leider div. mySQL-Aufrufe wo die php.exe dann versagt.

Den Zusammenhang musst du aber erklären? *grübel*
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Wuppi » 20. June 2006 20:22

Wiedmann wrote:
das 2. hat leider div. mySQL-Aufrufe wo die php.exe dann versagt.

Den Zusammenhang musst du aber erklären? *grübel*


wie gesagt 2 Scripte: das eine ist rein php ... im 2. Script sind div. mySQL-Anweisungen drin. Wenn ich das script über "php.exe d:\www\script2.php" starte passiert null - wahrscheinlich weil PHP nackig kein SQL kann (wenn ich die php.exe aufrufe wird wahrscheinlich netmal die php.ini und somit die entsprechenden module geladen - richtig?). Das 2. Script klappt im Browser (oder halt wget) aber problemlos - nur bringt mir so ein Aufruf (alle x minuten) ein ziemlich volles log. Daher die Frage eher wie ich verhindern kann das alles geloggt wird ... bestimmter UA mit bestimmter IP z.b. auf "ignore" oder wenn UA Dateie X aufruft = "ignore"

Gruß
Wuppi
Wuppi
 
Posts: 25
Joined: 11. August 2005 00:42

Postby Wiedmann » 20. June 2006 23:18

Wenn ich das script über "php.exe d:\www\script2.php" starte passiert null

Warum passiert nichts? Irgendwie scheint das Script nicht sehr intelligent zu sein, was das Auswerten/Anzeigen von Fehlermeldungen angeht? ;-) (Da kannst ja froh sein, dass es im Web auf Anhieb tut...)

wahrscheinlich weil PHP nackig kein SQL kann

Was ist "PHP nackig"? Jedenfalls ist das CLI nichts anderes als das Modul. Beides das selbe PHP, nur das eines im Server eingebunden ist, und das andere in der Konsole aufgerufen wird (fast so wie die CGI-Version, die ja bei den meisten Hostern zum Einsatz kommt)

(wenn ich die php.exe aufrufe wird wahrscheinlich netmal die php.ini und somit die entsprechenden module geladen - richtig?)

Falsch. Ist wie gesagt alles "das selbe" PHP. Müssen natürlich nicht unbedingt die selbe INI benutzen. Oder es läuft wirklich ohne INI. Aber da hier keiner deine Installation kennt, kann man da nur spekulieren. (Genauso bei der Frage warum das Script letztendlich versagt. Es kennt ja keiner)
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Wuppi » 21. June 2006 01:11

Hi

warum das Script versagt ist ja auch egal ... das ja nicht meine Fragestellung :( Interessiert mich eigentlich net warum das so ist - ich möchte wirklich nur einen Anhaltspunkt/Lösung für mein Problem beim Loggen haben. Der UA von Wget soll nicht geloggt werden (mit IP zur "verifizierung", damit fremde Wgets trotzdem erfasst werden; "wenn ua='wget' und ip='1.2.3.4' dann 'zugriff nicht loggen'")!!





Trotzdem hier noch eine Erklärung:
Es läuft via Browser wunderbar. Die CLI-Version von php5 kann also ohne weiteres zutun auf eine mySQL-DB zugreifen (wenn im Script die entsprechenden Daten stehen - also Server, User, PW usw.)? (php wird von apache als Modul gestartet [LoadModule php5_module], mySQL wird in der php.ini als extension eingebunden) - würde ja bedeuten das ich bei einem CLI-Aufruf der php.exe quasi alle extensions startet??? - oder halt keine!!! Die ini liegt ja in einem ganz anderen Verzeichnis (nichtmal im default [wäre ja \windows\]) - php.exe weiß so also garnicht welche Extensions mich interessieren ... php wird ja "normal" via apache gestartet - wo auch der Standort der php.ini (PHPIniDir) definiert ist. Das wird daher wohl das Problem sein, warum die php.exe bei meinem Aufruf kein zugriff auf die mySQL kann. Einfach weil es nicht weiß das es diese Extension überhaupt laden soll und somit keine Ahnung von mySQL hat.

Das Script_2 macht nichts anderes als:
* Uptime des Systems ermitteln
* diese Uptime wird in die mySQL geschrieben
* dann wird aus der DB der Uptime-Rekord ausgelesen und mit der aktuellen Verglichen. Bei neuem Rekord wird der alte Eintrag überschrieben.
(ich weiß; man könnte das auch einfacher mit einer Datei machen; nur Datei mach ich schon in Script1 (Monitort was anderes) - wäre ja langweilig alles gleich zu machen ... Spielerei!)

Bei meinem Test hab ich die aktuelle Uptime in der DB auf Null gesetzt und versucht per "php.exe script2.php" zu überschreiben - klappte nicht. Auch wenn ich einen fixen wert übertragen möchte geht das nicht. Es kommt keinerlei Meldung. Script1.php dagegen lässt sich so wunderbar abarbeiten (greift auf keine mySQL zu)

Z.b.
$aendern = "UPDATE `uptime` SET `uprekord` = $uptime WHERE `id` = '2'";
$update = mysql_query($aendern);


ganz simple - aber wie schon mehrfach erwähnt andere Baustelle ;)

Gruß
Wuppi
Wuppi
 
Posts: 25
Joined: 11. August 2005 00:42

Postby Wiedmann » 21. June 2006 11:36

warum das Script versagt ist ja auch egal ... das ja nicht meine Fragestellung

Im Prinzip schon. Es macht ja einfach keinen Sinn, für sowas auch noch einen Webserver einzubinden. Ansonsten bräuchtest du hier "SetEnvIf".

Die ini liegt ja in einem ganz anderen Verzeichnis (nichtmal im default [wäre ja \windows\]) - php.exe weiß so also garnicht welche Extensions mich interessieren ... php wird ja "normal" via apache gestartet - wo auch der Standort der php.ini (PHPIniDir) definiert ist.

Wenn die INI nicht in einem der Verzeichnisse ist wo sie autom. gesucht wird, oder keine ENV-Variable den Standort definifert (Analog zu PHPIniDir), dann kannst du dem CLI auch einfach beim Aufruf, per Parameter, sagen wo die INI ist und deine Probleme sind gelöst. (bei PHP5 musst PHP auf jeden Fall über 'ne INI sagen, dass du MySQL haben willst)

Es kommt keinerlei Meldung

Eben das kann man eigentlich kaum glauben... Wenn du keine MySQL-Extension über eine INI geladen hast und du benutzt eine MySQL Funktion, erhälst du von PHP auf jeden Fall einen "Fatal error" und das Script wird abgebrochen.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany


Return to Apache

Who is online

Users browsing this forum: No registered users and 2 guests