Berechtigungen für neues Verzeichnis im Verzeichnis htdocs

Irgendwelche Probleme mit XAMPP für Linux? Dann ist hier genau der richtige Ort um nachzufragen.

Berechtigungen für neues Verzeichnis im Verzeichnis htdocs

Postby horstschulz » 17. December 2010 21:16

Hallo,
ich habe:
openSUSE 11.3,
xampp 1.7.3.a

im Verzeichnis /opt/lampp/htdocs/ habe ich meine Web-Anwendung intranet. Also:
/opt/lampp/htdocs/intranet/

Die Anwender meiner Anwendung können / sollen über ein PHP-Formular Kurzmitteilungen schreiben. Diese Mitteilungen sollen dann außerhalb vom Verzeichnis intranet in das Verzeichnis:
/opt/lampp/htdocs/nachrichten

gespeichert werden.
Aber ich bekomme es nicht gebacken, das die Nachrichten auch dort gespeichert werden.
Als root habe ich das Verzeichnis nachrichten angelegt und mit den Befehl
chown benutername, chgrp nobody geändert, dann mit chmod 0666.
bearbeitet
die Fehlermeldung:
fopen(../nachrichten/info_tester0b.txt) [function.fopen]: failed to open stream: No such file or directory in /opt/lampp/htdocs/intranet/test.php on line 12

ist wohl der Klassiker! :mrgreen:
Was mache ich falsch, wie mache ich es richtig?
Alle die mir antworten, vorab vielen dank!
Auch wenn ich das Verzeichnis nachrichten in das Verzeichnis intranet lege, habe ich gleiches Problem
ich hasse Streß
Horst
horstschulz
 
Posts: 71
Joined: 29. December 2002 11:38
Location: Stade

Re: Berechtigungen für neues Verzeichnis im Verzeichnis htdo

Postby Nobbie » 17. December 2010 21:57

>dann mit chmod 0666.

Auf ein Verzeichnis?

Damit ist das Verzeichnis unbrauchbar, ein Verzeichnis MUSS das "executable Flag" aktiviert haben, sonst kann man nichts damit anfangen. D.h. Du mußt statt 0666 den Wert 0777 vergeben.
Nobbie
 
Posts: 13182
Joined: 09. March 2008 13:04

Re: Berechtigungen für neues Verzeichnis im Verzeichnis htdo

Postby horstschulz » 18. December 2010 09:59

Nobbie wrote:>dann mit chmod 0666.

Auf ein Verzeichnis?

Damit ist das Verzeichnis unbrauchbar, ein Verzeichnis MUSS das "executable Flag" aktiviert haben, sonst kann man nichts damit anfangen. D.h. Du mußt statt 0666 den Wert 0777 vergeben.

vielen dank,aber vielleicht habe ich was missverstanden:
chmod 0666 bedeutet doch alle dürfen lesen / schreiben.
chmod 0777 bedeutet alle dürfen ausführen, lesen und schreiben.
In dem Verzeichnis sollen aber nur Textdateien geschrieben und wieder gelesen werde. Darin befindet sich kein ausführbarer Job (z. B. php).
Werde es mal Probieren.
---------------------------------------
habe probiert,
allerdings habe ich das Verzeichnis nachrichten innerhalb von der Webanwendung intranet gelegt.
Kann in der Tat eine neue Textdatei über Web-Anwendung mit PHP anlegen:
total 60
-rw------- 1 root root 50 Dec 1 20:56 .directory
-rw-rw-rw- 1 horst nobody 227 Dec 1 20:26 info_tester02.txt
-rw-rw-rw- 1 horst nobody 950 Dec 1 20:26 info_tester04.txt
-rw-rw-rw- 1 horst nobody 3195 Dec 1 20:26 info_tester06.txt
-rw-rw-rw- 1 horst nobody 80 Dec 5 18:37 info_tester08.txt
-rw-r--r-- 1 horst nobody 2 Dec 5 18:37 info_tester08.txt~
-rw-rw-rw- 1 horst nobody 1565 Dec 1 20:26 info_tester09.txt
-rw-rw-rw- 1 horst nobody 729 Dec 1 20:26 info_tester0a.txt
-rw-r--r-- 1 nobody nogroup 0 Dec 18 09:40 info_tester0c.txt
-rw-rw-rw- 1 horst nobody 26 Dec 1 20:26 ipsperre_test.txt
-rw-rw-rw- 1 horst nobody 26 Dec 1 20:26 ipsperre_tester02.txt
-rw-rw-rw- 1 horst nobody 26 Dec 1 20:26 ipsperre_tester03.txt
-rw-rw-rw- 1 horst nobody 26 Dec 1 20:26 ipsperre_tester04.txt
-rw-rw-rw- 1 horst nobody 26 Dec 1 20:26 ipsperre_tester05.txt
-rw-rw-rw- 1 horst nobody 26 Dec 1 20:26 ipsperre_tester08.txt
-rw-rw-rw- 1 horst nobody 26 Dec 1 20:26 ipsperre_tester09.txt

es ist die ....tester0c.txt
der Job dazu:
Code: Select all
<?php
session_start();
$trenner = str_repeat("-", 80);
$sperr_file ="nachrichten/info_tester0c.txt";
#
   echo "6 ".$sperr_file."<br>";   
   fopen($sperr_file,"a+");
   flock ($sperr_file,2);
        fputs ($sperr_file,$trenner,21);
        flock($sperr_file,3);
   fclose($sperr_file);
exit();
?>

im Browser wird angezeigt:
6 nachrichten/info_tester0c.txt

Warning: flock() expects parameter 1 to be resource, string given in /opt/lampp/htdocs/intranet/test.php on line 13

Warning: fputs() expects parameter 1 to be resource, string given in /opt/lampp/htdocs/intranet/test.php on line 14

Warning: flock() expects parameter 1 to be resource, string given in /opt/lampp/htdocs/intranet/test.php on line 15

Warning: fclose() expects parameter 1 to be resource, string given in /opt/lampp/htdocs/intranet/test.php on line 16

Es ist aber alles noch sehr krautig, und ich weiss nicht wo ich ansetzten soll!
ich hasse Streß
Horst
horstschulz
 
Posts: 71
Joined: 29. December 2002 11:38
Location: Stade

Re: Berechtigungen für neues Verzeichnis im Verzeichnis htdo

Postby Nobbie » 18. December 2010 11:15

horstschulz wrote:Es ist aber alles noch sehr krautig, und ich weiss nicht wo ich ansetzten soll!


Wie wäre es mit "PHP lernen"?

Auf www.php.net gibt es ein ausgezeichnetes Manual und als erstes solltest Du dort mal die Syntax der von Dir verwenden Dateifunktionen (fopen, flock, fclose usw.) nachschauen, insbesondere erst einmal den Syntax von fopen() - da sollte Dir ein erheblicher Unterschied zu Deinem Script auffallen:

http://de.php.net/manual/en/function.fopen.php

Und auch die Doku zu flock() beinhaltet Beispiele, die Dir eklatante Unterschiede zu Deinem Script aufzeigen:

http://de.php.net/manual/en/function.flock.php
Nobbie
 
Posts: 13182
Joined: 09. March 2008 13:04

Re: Berechtigungen für neues Verzeichnis im Verzeichnis htdo

Postby Altrea » 18. December 2010 11:23

horstschulz wrote:Warning: flock() expects parameter 1 to be resource, string given in /opt/lampp/htdocs/intranet/test.php on line 13

Warning: fputs() expects parameter 1 to be resource, string given in /opt/lampp/htdocs/intranet/test.php on line 14

Warning: flock() expects parameter 1 to be resource, string given in /opt/lampp/htdocs/intranet/test.php on line 15

Warning: fclose() expects parameter 1 to be resource, string given in /opt/lampp/htdocs/intranet/test.php on line 16
Es ist aber alles noch sehr krautig, und ich weiss nicht wo ich ansetzten soll!


Die Fehlermeldung ist doch ganz eindeutig. flock, fputs und fclose erwarten als ersten Übergabeparameter eine Ressource (ein Objekt, eine Instanz) von etwas. Doch aus irgendeinem Grund bekommen diese Funktionen Strings übergeben.
Das erste was ich mich als Entwickler fragen würde: Warum werden Strings übergeben?
Das ist in deinem Script ganz leicht erkennbar. Du übergibst bei den Funktionen jeweils den Dateinamen als String.
Nun da du weißt, dass die Funktionen aber ein Objekt erwarten wäre das nächste was ich tun würde mir die einzelnen Funktionen ansehen, um zu sehen was für ein Objekt sie erwarten.
Und wenn du das herausgefunden hast, dann soltest du dein Script so ändern, dass du die Funktionen richtig verwendest.

Kleiner Tipp: Schau dir mal den Rückgabewert von fopen() in der PHP Dokumentation an.
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 11935
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 11 Pro x64

Re: Berechtigungen für neues Verzeichnis im Verzeichnis htdo

Postby horstschulz » 18. December 2010 12:49

mann,
das war es.
Ich habe vor lauter Wald die Bäume nicht mehr gesehen :oops:

Jetzt komme ich weiter.
ich hasse Streß
Horst
horstschulz
 
Posts: 71
Joined: 29. December 2002 11:38
Location: Stade


Return to XAMPP für Linux

Who is online

Users browsing this forum: No registered users and 8 guests