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


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:42 Uhr.

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