josef: Ansätze einer Problemlösung?

moin zusammen

Habe versucht das Suchscript http://www.planetc.de/download/planetsearch/planetsearch.html
für die Suche auf die eigenen Seiten an meine Seiten anzupassen und auch lokal . Das klappt auch ganz gut bisher, nur bekomme ich unter der Ergebnisausgabe folgende Fehlermeldungen.

Warning: fopen("./admin/_log/search_log.txt", "w+") - Permission denied in /srv/www/htdocs/attac/planetsearchix/planetsearchix.php on line 181

Warning: flock(): supplied argument is not a valid File-Handle resource in /srv/www/htdocs/attac/planetsearchix/planetsearchix.php on line 182

Warning: fwrite(): supplied argument is not a valid File-Handle resource in /srv/www/htdocs/attac/planetsearchix/planetsearchix.php on line 183

Warning: flock(): supplied argument is not a valid File-Handle resource in /srv/www/htdocs/attac/planetsearchix/planetsearchix.php on line 184

Warning: fclose(): supplied argument is not a valid File-Handle resource in /srv/www/htdocs/attac/planetsearchix/planetsearchix.php on line 185

Soweit ich das auch nur ansatzweise verstehe, sind dafür folgende zeilen des scripts zuständig,

Logdatei schreiben

foreach ($search_arr as $search_exp) {

$zeilen = file("./admin/_log/search_log.txt");
$anz_zeilen = sizeof($zeilen);

$x=0;

Datenfile auslesen

for ($i=0; $i<$anz_zeilen; $i++) {

list ($search_word, $search_num) = split("\|", chop($zeilen[$i]));

// wenn Suchbegriff gefunden wird
        if ($search_exp==$search_word) {
                $search_num++;
                $i-2;
                $x++;
        }
            $new_log .= "$search_word|$search_num\n";
}

// wenn der Suchbegriff nicht schon geloggt wurde
if ($x==0) {
        $search_num = "1";
    $new_log .= "$search_exp|$search_num\n";
}

$data = fopen("./admin/_log/search_log.txt","w+");
flock($data,1);
fwrite($data, $new_log);
flock($data,3);
fclose($data);
unset($new_log);
}

nun weiß ich nicht weiter und wäre sehr dankbar für einen Lösungsansatz von mir aus auch mit dem Zaunpfahl;).

Habe ich bei der Rechtevergabe geschlampert?

gruß josef

  1. Hi,

    Warning: fopen("./admin/_log/search_log.txt", "w+") - Permission denied

    das ist IMHO sehr deutlich. Dein Script hat kein Recht, diese Datei schreibend zu öffnen.

    Warning: [...]

    Der Rest sind Folgefehler.

    Soweit ich das auch nur ansatzweise verstehe, sind dafür folgende zeilen des scripts zuständig,

    Nein, die Dateirechte.

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  2. Hallo Josef!

    Ich kenne zwei mögliche Fehlerquellen;
    1. Der Account, unter welchem du PHP startest (in den allermeisten Fällen der Account des Webservers) hat auf dem Verzeichnis in das du liest / schreibst keine Rechte.

    2. In der PHP.ini Datei gibt es eine Direktive, welche "basedir" oder so ähnlich heisst. Mit dieser Diektetive gibst du an, wo überall PHP mit Dateien herumspielen darf.
    Prüfe mal diese Direktive....

    Gruss
    Ben

  3. Hallo Josef,

    Warning: fopen("./admin/_log/search_log.txt", "w+") - Permission denied in /srv/www/htdocs/attac/planetsearchix/planetsearchix.php on line 181

    ... das geht also schief ...
    alle folgenden Meldungen sind Folgefehler, siehe auch Cheatahs
    Posting, die Du vermeiden kannst und solltest

    $data = fopen("./admin/_log/search_log.txt","w+");

    Nur wenn Du die Datei erfolgreich öffnen konntest,
    kannst Du das folgende tun, deswegen:

    if ($data) {

    flock($data,1);
    fwrite($data, $new_log);
    flock($data,3);
    fclose($data);
    unset($new_log);
    }

    und schließe den Block an der richtigen Stelle ;-)

    nun weiß ich nicht weiter und wäre sehr dankbar für einen Lösungsansatz von mir aus auch mit dem Zaunpfahl;).

    Habe ich bei der Rechtevergabe geschlampert?

    Sieht so aus ;-)

    Lese bitte die Benutzerbeiträge zu http://de.php.net/manual/de/function.fopen.php;
    einige, wenn auch wenige Beispielen empfehlen diese Vorgehensweise.
    Einfach in Zukunft Dateizugriffe, Sperroperationen, Datenbankzugriffe, usw. auf Erfolg zu überprüfen.

    gruß josef

    Freundliche Grüße,

    Vinzenz

  4. remoin zusammen

    Mal ein herzliches Dankeschön an euch drei. Klappt tatsächlich jetzt.

    gruß josef