WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   IIS:PHP "Permission denied..."! (http://www.wcm.at/forum/showthread.php?t=43566)

Gironimo 19.01.2002 19:50

IIS:PHP "Permission denied..."!
 
folgendes Problem: ich hab einen Counter in einem PHP Skript eingebaut, allerdings bringt der Browser Fehlermeldungen. Im internen Browser vom Editor PHP Coder funktioniert es.

Ohne Counter funktioniert es. Die Einstellungen am IIS sollten eigentlich stimmen.

der Source:
<?php
$countfile = "count.dat";
if(! file_exists($countfile)){
$fd = fopen($countfile,"w+");
$count=0;
} else {
$fd = fopen($countfile,"r+");
$count = fgets($fd,100);
if (! $count)
$count=0;
}
rewind($fd);
$count++;
fwrite ($fd, $count);
fclose ($fd);

echo "<html>
<head>
<title>Gironimo's Site</title>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">
<link rel=\"stylesheet\" href=\"styles.css\" type=\"text/css\">
</head>

<body bgcolor=\"#FFFFFF\" text=\"#000000\" link=\"#000000\" vlink=\"#000000\" alink=\"#000000\">
<table width=\"100%\" border=0 cellspacing=0 cellpadding=0 height=100% align=center>
<tr>
<td>
<div align=\"center\">


<img src=\"/images/gironimo.jpg\" width=493 height=162></p>


<font color=\"#666666\"><font size=\"1\" class=\"noformat\">SEND ME AN
<a href=\"mailto:gironimo20@gmx.at\">E-MAIL</a>!</font>
</font></p>
</div>
</td>
</tr>
<tr>
<td><div align=\"center\">Sie sind der " . $count . ". Besucher</div>
</td>
</tr>
</table>
</body>
</html>"
?>


die Fehlermeldungen:
Warning: fopen("count.dat", "r+") - Permission denied in G:\Inetpub\wwwroot\php\index.php on line 8
Warning: Supplied argument is not a valid File-Handle resource in G:\Inetpub\wwwroot\php\index.php on line 9
Warning: Supplied argument is not a valid File-Handle resource in G:\Inetpub\wwwroot\php\index.php on line 14
Warning: Supplied argument is not a valid File-Handle resource in G:\Inetpub\wwwroot\php\index.php on line 18
Warning: Supplied argument is not a valid File-Handle resource in G:\Inetpub\wwwroot\php\index.php on line 19


Kann der IIS nicht auf externe Dateien zugreifen? Der Include-Befehl funktioniert auch nicht, ich hab nämlich probiert, den Counter in einem externen File einzubinden. Aber ich hab gehört, dass der Include-Befehl unter Windows generell nicht funktioniert.(?)

Der Link: Mein php-Testserver

Thx for any advice
Gironimo

_m3 19.01.2002 19:58

Re: IIS:PHP "Permission denied..."!
 
Zitat:

Original geschrieben von Gironimo
$fd = fopen($countfile,"r+");
Boeh - da hrieg ich immer SO eine Hals, wenn wer einfach ein "open" macht, ohne den Filehandle nacher auf Gültigkeit zu testen. :mad:
Aber auch ohne Test sagt er die ja eh alles .....
Zitat:

die Fehlermeldungen:
Warning: fopen("count.dat", "r+") - Permission denied in G:\Inetpub\wwwroot\php\index.php on line 8
Warning: Supplied argument is not a valid File-Handle resource in G:\Inetpub\wwwroot\php\index.php on line 9
Warning: Supplied argument is not a valid File-Handle resource in G:\Inetpub\wwwroot\php\index.php on line 14
Warning: Supplied argument is not a valid File-Handle resource in G:\Inetpub\wwwroot\php\index.php on line 18
Warning: Supplied argument is not a valid File-Handle resource in G:\Inetpub\wwwroot\php\index.php on line 19

Was heisst wohl "Permission denied" ?????
Die restlichen Fehler sind Folgefehler, da Du den Filehandle nach dem öffnen nicht überprüfst.

Und weil ich grad so grantig bin: Was passiert denn, wenn zwei Leute gleichzeitig die Seite laden und in das File schreiben wollen????
Stichwort: "flock"!

Philipp 19.01.2002 23:16

Das ist ja schlimmer als ich dachte. Jetzt bewertet _m3 schon PHP Programme :eek: ;)

Zitat:

Kann der IIS nicht auf externe Dateien zugreifen?
Du musst die Schreibrechte in dem Verzeichnis wo das Script ist aktivieren :)

Ausserdem sollte flock angewendet werden da es sonst passieren kann das der Counter plötzlich wieder bei 1 beginnt.

_m3 19.01.2002 23:53

:lol: LOL :D

Na so schlimm is ned: PHP sux, Perl rulez - damit die Weltordnung für den Philipp wieder stimmt ;)

Meine Bewertung bezog sich auf die mangelnde Sauberkeit beim Programmieren, vor allem, wenn es um erwartbare Fehler geht. Und eine Fehlerprüfung nach einem open muss sein, wie dieser Thread wieder schön zeigt. :D
Und dabei ist es egal, ob das open in Perl, PHP, C, Pascal, VB oder Ruby passiert.

Gironimo 20.01.2002 04:38

@_m3

ich muss zugeben, ich hab den Source nur kopiert (von der CD zum Buch "PHP 4", BHV-Verlag), weil ich bin grad im Erlernen von PHP.

Danke für den Hinweis. Wennst bitte so nett wärst, mir mitzuteilen, wie ich den Filehandler überprüfen soll? Ist damit "flock()" gemeint?

Nachdem es scho a bisserl spät is, geh ich zuerst schlafa, bin grad erst vom Ball zruck und werd mir das so gegen heut Nachmittag anschaun.

hu
Gironimo

Philipp 20.01.2002 08:20

Hier die Fassung mit Flock und Filehandler Überprüfung :)

PHP-Code:

<?php 
$countfile 
"count.dat"
(!
file_exists($countfile)) ? $fd fopen($countfile,"w+") : $fd fopen($countfile,"r+"); 
if (
$fd && flock($fd2)) {
      
$count fgets($fd,100); 
      (!
$count) ? $count=$count++;
      
rewind ($fd);
      
fwrite ($fd$count); 
 } else { 
      echo 
"Fehler! Kann nicht auf die Datei $countfile zugreifen";
      exit;
}
flock($fd3);
fclose ($fd);

echo <<<site
<html> 
<head> 
<title>Gironimo's Site</title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<link rel="stylesheet" href="styles.css" type="text/css"> 
</head> 

<body bgcolor="#FFFFFF" text="#000000" link="#000000" vlink="#000000" alink="#000000"> 
<table width="100%" border=0 cellspacing=0 cellpadding=0 height=100% align=center> 
<tr> 
<td> 
<div align="center"> 


[img]/images/gironimo.jpg[/img]</p> 


<font color="#666666">[b]<font size="1" class="noformat">SEND ME AN 
[email="gironimo20@gmx.at"]E-MAIL[/email]!</font>[/b]</font></p> 
</div> 
</td> 
</tr> 
<tr> 
<td><div align="center">Sie sind der [b]" . $count . ".[/b] Besucher</div> 
</td> 
</tr> 
</table> 
</body> 
</html>
site;
?>


_m3 20.01.2002 10:25

Für ein PHP-Script wunderschön :)
Vor allem die Nutzung des Ternären VErgleichoperators! :cool:

Was ich aber in der Doku nicht gefunden habe: gibt es eine Möglichkeit, die Fehlermeldung auszugeben (vergleichbar mit Perls $!)?

mqs 20.01.2002 10:50

Könnte es das sein:
Hast den
CHMOD=777
gesetzt?

Philipp 20.01.2002 11:35

_m3:
Ist mir zumindest nicht bekannt. PHP gibt aber standardmässig Fehlermeldungen von sich wenn etwas mal nicht funktioniert.

mqs:
Das ist kein Unix Server sondern Windows 2000. Aber genau die fehlenden Schreibrechte dürften das Problem sein :)

Gironimo 20.01.2002 21:16

@Philipp
 
Vielen Dank, es funktioniert! Ich musste ziemlich rigoros die Zugriffsrechte im Web-Ordner ändern, dh ich hab mal alle zuerst rausgelöscht und anschließend neu angelegt.

Also vielen Dank.
My PHPConstructionPage

Gironimo 20.01.2002 23:09

Zitat:

Original geschrieben von Philipp
Das ist ja schlimmer als ich dachte. Jetzt bewertet _m3 schon PHP Programme :eek: ;)


Du musst die Schreibrechte in dem Verzeichnis wo das Script ist aktivieren :)

Ausserdem sollte flock angewendet werden da es sonst passieren kann das der Counter plötzlich wieder bei 1 beginnt.

Flock: Gibt's übrigens auch in Deutsch. Ist doch ein wenig leichter ;)

valo 21.01.2002 00:20

mhh, fällt irgendwie unter persönliche vorlieben ... wenns a englische version gibt zieh ich die eigentlich vor, und wenn i mi dann nimma auskenn riskier ich einen blick in eine de version...

Gironimo 21.01.2002 22:43

Danke an Spaßvogel
 
Nämlich dafür, dass jemand meinen Counter-Wert meiner (Test-) HP (siehe Sig) erhöht hat.

Hab schön gstaunt, als ich den Wert gesehen hab (fühlte mich soooo :cool: ), hab mir aber gleich denken müssen, dass da was faul ist.

Ein Spaßvogel hat offensichtlich auf "F5" gedrückt und so 200 Hits raufgezählt. Der Server hat natürlich IP und Uhrzeit mitgeloggt. :lol: :roflmao: :lol:

Stört mich aber nicht. Es hat mich nur darauf aufmerksam gemacht, dass so ein Counter von Außen sehr manipulierbar ist. Weiß wer, wie man sowas unterbinden kann? Möchte schon einen seriösen Wert im Counter haben.

SPep 21.01.2002 23:05

entweder mit cookies oder mit ip adresse aber im endeffekt würd ich sagen, dass es nicht 100%ig geht...

Philipp 22.01.2002 12:20

Aber 99% ;) Hier ein Auszug der Variante mit IP Logging:

PHP-Code:

$countfile "count.dat"
(!
file_exists($countfile)) ? $fd fopen($countfile,"w+") : $fd fopen($countfile,"r+"); 
if (
flock($fd2)) {
      
$countfile explode("|",fgets($fd,100));
      
$count $countfile[0];
      if (
$REMOTE_ADDR != $countfile[1]) {
         (!
$count) ? $count=$count++;
         
rewind ($fd);
         
fwrite ($fd$count."|$REMOTE_ADDR"); 
      }
 } else { 
      echo 
"Fehler. Kann auf die Datei $countfile nicht zugreifen";
      exit;
}
flock($fd3);
fclose ($fd); 

Das komplette Script gibt es wieder als Attachment

Gironimo 23.01.2002 23:20

toller Service! Doch leider scheint es nicht ganz zu klappen.

Wenn ich selbst die Seite aufrufe, funktioniert es wie gewünscht. Aber um ganz sicherzugehen hab ich schnell einen Freund angerufen. Wenn er die Seite aktualisiert tut's der Counter auch.

PHPConstr.Page Momentan ist der Zähler bei 120. Könnt ihr probieren, ob er Counter beim Aktualisieren raufzählt?

Danke.
Gironimo


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag