fastix®: Schreiben einer Textdatei mit

Beitrag lesen

Moin!

Da gibt es  z.B. außerdem noch die Verzeichnisse pd, private und web_users.

Dafür sollte es eine Dokumentation des Hosters geben. Mithin sind dies aber alles Verzeichnisse, die wahrscheinlich(!) vom Webserver nicht beachtet werden, da diese außerhalb des konfigurierten Document-Root liegen.

Du kannst diese Verzeichnisse dann benutzen um darin also Daten abzulegen, die nicht - oder nicht ohne weiteres - via Webserver abrufbar sein sollen. Genau so gut kannst Du aber ein anderes Verzeichnis dafür benutzen, soweit Du die Rechte hast, dieses gegen Zugriffe zu schützen.

Das kannst Du testen:

lege ein Verzeichnis "test" im Verzeichnis "httpdocs" an. Setze die Rechte auf 0755. (Eigentümer: alle Rechte; Gruppe, Welt: Lesen und Betreten)
lege in dieses Verzeichnis eine index.html (darin muss nicht viel stehen: "<h1>Test</h1>" reicht.
lege darin eine Datei mit dem Name ".htaccess" an. Schreibe in diese "deny from all"

Kommt bei einem Aufruf von http://Dein.Server/test/

eine Fehlermeldung:
403 - Forbidden - dann ist die Welt in Ordnung
404 - dann hast Du Dich vertippt
500 - Du hast als wertiger Kunde Deines Webhosters nicht einmal das Recht mit einer Datei ".htaccess" den Zugriff zu verbieten

Nächster Test:
bringe im Verzeichnis httpdocs eine test.php unter:

  
<?php  
$strDir='test'; # oder '../private' oder...  
$strFile='./'.$strDir.'/hallo.txt';  
$strRechte=false;  
$strNewLine="\n";  
  
/*  
 Test, ob das Verzeichnis existiert:  
*/  
if (! is_dir($strDir)) {  
  die ("<strong>Fatal:</strong>: $strDir ist kein Verzeichnis.".$strNewLine.$strNewLine);  
}  
  
/*  
 Damit nicht versehentlich etwas überschrieben wird:  
*/  
if (is_file($strFile) || is_dir($strFile)) {  
  die ("<strong>Fatal:</strong> $strFile existiert schon.".$strNewLine.$strNewLine);  
}  
  
/*  
 Prüfen, ob in das Verzeichnis geschrieben werden (Dateien angelegt, gelöscht, umbenannt) werden kann  
*/  
if (! is_writable($strDir)) {  
   $strRechte=fileperms($strDir); # bestehende Rechte lesen  
  
   /*  
    Sehr großzügige Rechte setzen  
   */  
  
   if (false===chmod ($strDir, '0777')) {  
      die ('<strong>Fatal:</strong> Verzeichnisrechte für "'.$strDir.'" ('.$strRechte.') genügen nicht und konnten nicht gesetzt werden.'.$strNewLine);  
   }  
  
   echo '<strong>Warnung:</strong> Verzeichnisrechte für "'.$strDir.'"  ('.$strRechte.') genügten nicht, wurden deshalb auf "777" gesetzt.<br />Nach dem test wird automatisch versucht, diese zurück zu setzen.'.$strNewLine;  
}  
  
/*  
  Versuch die leere Datei anzulegen:  
*/  
if (false===touch($strFile)) {  
   die ('<strong>Fatal:</strong> Trotz aller schönen Theorien konnte die Datei "'.$strFile.'" nicht angelegt werden. Frage den Hoster warum das so ist.'.$strNewLine.$strNewLine);  
}  
  
/*  
  Versuch die Schreib-Rechte für die ganze Welt zu setzen:  
*/  
if (false===chmod($strFile, '0666')) {  
   die ('<strong>Fatal:</strong> Trotz aller schönen Theorien konnten für die Datei "'.$strFile.'" keine Rechte vergeben werden. Frage den Hoster warum das so ist.'.$strNewLine.$strNewLine);  
}  
  
/*  
  Versuch in die Datei zu schreiben:  
*/  
if (false===file_put_contents($strFile, 'Hallo Welt!')) {  
   die ('<strong>Fatal:</strong> Trotz aller schönen Theorien konnte nicht in die Datei "'.$strFile.'"  geschrieben werden. Frage den Hoster warum das so ist.'.$strNewLine.$strNewLine);  
}  
  
/*  
  Versuch die Datei zu lesen:  
*/  
  
echo 'Die Datei "'.$strFile.'" hat jetzt folgenden Inhalt:<hr /><pre>'.$strNewLine;  
readfile  ($strFile);  
echo $strNewLine.'</pre><hr />'.$strNewLine;  
  
/*  
  Versuch die Datei zu löschen:  
*/  
if (false===unlink ($strFile)) {  
   die('<strong>Die Datei "'.$strFile.'" konnte nicht gelöscht werden. Warum ist unklar. Lösche die Datei manuell per FTP.</strong>'.$strNewLine.$strNewLine);  
}  
  
  
/*  
  Wurden Rechte am Verzeichnis gesetzt so wird versucht, diese zurück zu setzen:  
*/  
  
if (! false ===$strRechte) {  
    chmod ($strDir, $strRechte) or die('<strong>Die Dateirechte am Verzeichnis "'.$strDir.'" konnten nicht zurück gesetzt werden. Dies muss sofort manuell überprüft werden!</strong>'.$strNewLine.$strNewLine);  
  
print 'Die Rechte am Verzeichnis "'.$strDir.'" wurden auf "'.$strRechte.'" zurück gesetzt.'.$strNewLine;  
}  
  
echo 'Scheint alles ok. zu sein, Die test-Datei wurde gelöscht'.$strNewLine.' ... exit.'.$strNewLine.$strNewLine;  
?>  

MFFG (Mit freundlich- friedfertigem Grinsen)

fastix