PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP Fehler



Newman
02.12.2003, 20:57
Hallo,

ich habe hier ein Script das ich als Counter fuer meine Webseite benutzen moechte. Diese Script lief frueher schon mal bei mir.

Jetzt zeigt es mir folgende Fehler an:
...
Warning: fopen(ip.txt): failed to open stream: Permission denied in /daten/www/counter/counter.php on line 30
...
Code von Zeile 30:
...
$ipfile = fopen($ipdir,"r+");
...

Habe auch auf w/a gestellt, doch der Fehler verschwindet nicht.

Kann mir jemand helfen ?

Steve
02.12.2003, 21:02
wem gehört die Datei? Sind die Dateirechte richtig gesetzt?

Newman
02.12.2003, 21:09
scheint nichts mit den dateirechten zu tun zu haben. hab sie geaendert.

caba
02.12.2003, 21:38
PHP hat die rechte der webservers.. hast du das bei ändern der rechte bedacht?

Newman
02.12.2003, 23:11
hm, naja. mal ein vergleich:
...
-rw-r--r-- 1 kalli users 15 2003-11-08 15:11 phpinfo.php

-rw-r--r-- 1 kalli users 2266 2003-12-02 20:41 counter.php
...

phpinfo laeuft, counter.php nicht. sind die gleichen rechte.
muss an was anderem liegen.

caba
02.12.2003, 23:39
ich rede von der $ip.txt, da wo du die zahlen reinschreibst......


bzw. http://de.php.net/manual/en/function.chmod.php

NiceDay
03.12.2003, 10:49
Du sollst die Rechte der Datei "ip.txt" ändern und guggen ob es geht, mal so zusammenfassend gesagt ;)

caba
03.12.2003, 11:17
Ist das nicht sinngemäß das selbe was ich geschrieben habe?

NiceDay
03.12.2003, 11:22
Manche DInge kann man auch schöner ausdrücken. Jemandem ne URL da hin zu klatschen nach dem Motto "nu such mal" ist glaube ich nicht die schönste Art und Weise, desweiteren hilft es Newman mehr wenn man direkt sagt das er die Rechte der Textdatei prüfen soll (erspart er sich einbißchen Arbeit, denk mal drüber nach!).

tr0nix
03.12.2003, 11:23
Ist das nicht sinngemäß das selbe was ich geschrieben habe?
/Klugscheiss an/Nope, du sagtest $ip.txt, er ip.txt ;)/Klugscheiss aus/.

// Edit
Hops das war wohl ne Minute auseinander. BTW. stimmt scheinbar die Boardzeit nicht..

caba
03.12.2003, 11:39
Also erstens habe ich ihm keine URL dahingeklatscht, sondern im gesagt er solle die Rechte für $ip.txt ändern.
Die URL wat ein zusatz, wo er sich anschauen kann, wie man die chmod mit PHP verwaltet.
Was war jetzt an deinem Post schöner? Nur das du keine URL geposted hast?!?
naja....


mfg manuel


Du gehst in das WWW_ROOT oder dahin wo die Datei ist, in der du schreiben willst, dort änderst du die rechte so, das der webserver aus der datei lesen kann,
Wenn das passiert ist, sollte es funktionieren

Edit by me.....

Newman
03.12.2003, 13:57
hm. die rechte sind jetzt wie folgt eingestellt:

-rwxrwxrwx für ip.txt.
die fehler werden nicht mehr angezeigt.
jedoch passiert nix :)

caba
03.12.2003, 14:12
Poste doch einfach mal den Code, dann kann jeder besser helfen, weil der Blick in Glaskugel hat mir gerade nichts gebracht...

Newman
03.12.2003, 14:20
<?

################################################## #####

$numip = "3"; //Anzahl der IP-Nummern, die gespeichert werden sollen
$font = "verdana"; //Schriftart
$fontsize = "1"; //Schriftgroesse
$fontcolor = "#000000"; //Schriftfarbe


$anzdir="counter.txt" ;
$ipdir="ip.txt" ;

################################################## #####


if (file_exists($anzdir) AND file_exists($ipdir))
{
global $REMOTE_ADDR, $ipdata, $userip1;
$userip = $REMOTE_ADDR ;
$ipfile = fopen($ipdir,"r+");
$ipfile1 = fgets($ipfile,200);
$ipdata = explode(":",$ipfile1);

if (in_array($userip, $ipdata))
{
global $nummer;
$anzahl = fopen("$anzdir", "r+") ;
$nummer = fgets($anzahl,9);

fclose($anzahl);
}
else
{
global $num, $userip;
$num = count($ipdata);

if ($num <= $numip)
{
fputs($ipfile,$userip.":");
fclose($ipfile);
$anzahl = fopen("$anzdir", "r+");
$nummer = fgets( $anzahl, 9 );
$nummer++;
fseek($anzahl, 0);
fputs( $anzahl, $nummer );
fclose($anzahl);
}
else
{
global $ipdata9, $push;
$pop = array_pop($ipdata);
$ipdata = array_reverse($ipdata);
array_push($ipdata,$userip);
$ipdata = array_reverse($ipdata);
$userip2 = implode(":",$ipdata);
$ipfile = fopen($ipdir,"w+");
fputs($ipfile,$userip2);
fclose($ipfile);

$anzahl = fopen("$anzdir", "r+");
$nummer = fgets( $anzahl, 9 );
$nummer++;
fseek($anzahl, 0);
fputs( $anzahl, $nummer );
fclose($anzahl);
}
}
}
else
{
if (file_exists($ipdir))
{
global $nummer;
$fo = fopen($anzdir,"w+");
fputs($fo, 1);
$nummer = 1;
}
else
{
global $nummer;
$foip = fopen($ipdir, "w+");
fputs($foip, $REMOTE_ADDR.":");
fclose($foip);
$foan = fopen($anzdir,"w+");
fputs($foan, 1);
$nummer = 1;
}
}

echo " $nummer";

?>

caba
03.12.2003, 15:25
liegt auf jedenfall an dir, weill bei mir geht das......
er schreibt aber keine IP nach IP.txt, werde es mir später man ansehen....

Newman
03.12.2003, 15:43
vielleicht hab ich php falsch installiert ?
habe keine zusatzpakete installiert. nur apache und das 'grobe' php.

caba
03.12.2003, 16:22
Nein daran liegts nicht....

Newman
03.12.2003, 21:38
hm, sondern ?

DaMutz
19.12.2003, 21:59
du hast register_globals auf off
entweder du schaltest es auf on oder du ersetzt $REMOTE_ADDR durch $_SERVER['REMOTE_ADDR'] oder so etwas ähnliches

Newman
22.12.2003, 01:16
aendert nichts.