PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mkdir


nurion
21.06.2006, 17:03:38
noch ein problem:
ich will mir dynamisch ordner erstellen lassen, mit folgendem befehl:


$dir = "../Projekte/$kunde_name/$name";
mkdir($dir, 0700);


der ordner wird auch angelegt aber leider im verzeichnis Projekte, sprich er wird nicht im unterverzeichnis angelegt, das den wert der variablen $kunde_name enthält. liegt das daran, dass ich hier nicht die variable benutzen darf oder müsste das problem irgendwo beim ein/auslesen des variablenvertes von $kunde_name liegen. ein ordner, der genau so heisst wie der wert der variable gibt es schon. er wurde vorher über selbigen befehl angelegt:


$dir = "../Projekte/$kunde_name";
mkdir($dir, 0700);

Morrandir
21.06.2006, 17:34:37
Na, wenn der Ordener mit $dir = "../Projekte/$kunde_name"; und mkdir($dir, 0700); richtig angelegt wurde, dann müsste das erste auch funktionieren... lass dir mal per echo anzeigen, ob die variablen überhaupt richtig gesetzt sind... (wenn in $name nix drin steht wird kein ordner angelegt, oder es wird versucht, den vorhandenen Ordner $kunde_name zu erstellen, den es ja bereits gibt (müsste dann auch n fehler geben))
Probier des ganze vielleicht auch mal mit $dir = '../Projekte/'.$kunde_name.'/'.$name; ich hab da manchmal mit den gänsefüschen probleme (aber eigentlich nur bei arrays...)

Wie gesagt als erstes mal nachschaun ob in $name was drinsteht... und evtl. ob dieses keine unerlaubten Sonderzeichen enthält... (Was bei nem Namen ja eigentlich nicht der Fall is es sei denn jemand heißt +//schnitzel oder so...)

nurion
21.06.2006, 17:47:54
also in $name muss ja was drinn stehen. der ordner wird ja erstellt. jedoch im verzeichnis Projekte, anstatt in einem unterverzeichnis von Projekte. anscheinend wird $kunde_name 'ignoriert' oder es ist ein fehler mit dieser variable aber dann dürfte er doch den ordner nicht in Projekte erstellen, oder?!?

wenn ich mir das per echo ausgeben lasse:

../Projekte//heute
also wird $kunde_name wohl vergessen

Blade1965
21.06.2006, 20:28:25
Wie sind denn die Rechte zum Erstellen des Verzeichnisses gesetzt?

Morrandir
21.06.2006, 20:45:37
Hm... mit Rechten hat das nichts zu tun... wenn die Variable eben das $kunde_name ignoriert bzw. diese variable leer ist... kann es ja gar nicht anders... schaun mal, ob du auch keine Schreibfehler drin hast... das soll sich jetzt nicht blöd anhören, mir geht das oft so... schau mal ob du überall immer $kunde_name geschrieben hast und nicht irgendwo vielleicht ein $kunden_name oder so reingerutscht ist...

xabbuh
21.06.2006, 20:45:46
Wie sind denn die Rechte zum Erstellen des Verzeichnisses gesetzt?
In diesem Fall unerheblich. Da das Verzeichnis ja korrekt angelegt wird (dafür dass $kunde_name nicht den gewünschten Wert hat, kann mkdir() nichts), werden die Rechte schon in Ordnung sein.

meikel (†)
21.06.2006, 21:00:36
In diesem Fall unerheblich. Da das Verzeichnis ja korrekt angelegt wird ...
Korrekt? Er wünscht sich 0700. Was will er mit einem Verzeichnis, das zwar alle "betreten" aber dort weder schreiben noch lesen dürfen? Jut, der Root dürfte...

xabbuh
21.06.2006, 22:03:27
Vielleicht reicht ihm, dass Besitzer Vollzugriff hat. Über seine Bedürfnisse hat der Op noch nichts geschrieben.

nurion
22.06.2006, 09:54:39
hmm, ich hab jetzt mal grad wo ihr von rechten sprecht geschaut wie das bei den ordnern aussieht...die die schon erstellt wurden sind bei rechtsklick, eigentschaften schreibgeschützt. kann es daran vielleicht iegen? ich hab das schreibgeschützt dann weg gemacht aber es bleibt net weg.
hab dann neue ordner erstellt mit 0777 und die sind ebenfalls schreibgeschützt.
kann es evtl mitunter daran leigen?

glaub ich hab nen denkfehler drinne. ich hab ne datei wo ich ein neues projekt anlege und will gleichzeitig nen ordner mitanlegen:

$sql = "INSERT INTO projekt (gruppe_id_pr, name, start_datum, archiv, beschr)";
$sql .= "VALUES ('$gruppe_id', '$name', '$datum', '$archiv', '$beschr')";
$result = mysql_query(htmlspecialchars($sql), $conn);

das funktioniert!

$dir = "../Projekte/$gruppe_id/$name";
mkdir($dir, 0777);
echo $dir;

wenn ich das mache, dann funktioniert es auch :) d.h. ich hab nen ordner mit ner id manuell erstellt und dann wird in diesem ordner der neue erstellt. das ist super.
aber ich will ja net dass der ordner wie die id sondern wie der name heisst...sprich statt $gruppe_id $kunde_name...also mach ich folgende abfrage:

$sql = "SELECT kunde_name FROM gruppe WHERE gruppe_id=$gruppe_id";
$res = mysql_query($sql, $conn);

dadurch müsste ich ja den wert von kunde_name rausbekommen, aber wenn ich das über echo ausgeben lasse, dann kommt nix. also denke ich,d ass der fehler darin liegt, dass ich nicht auf die variable zugreifen kann.

meikel (†)
22.06.2006, 10:28:17
Vielleicht reicht ihm, dass Besitzer Vollzugriff hat.
Weiß er schon, daß der Kram dann exklusiv dem Apachen gehört und er via FTP noch nicht mal in das Verzeichnis reinkommt?

xabbuh
22.06.2006, 21:55:58
hmm, ich hab jetzt mal grad wo ihr von rechten sprecht geschaut wie das bei den ordnern aussieht...die die schon erstellt wurden sind bei rechtsklick, eigentschaften schreibgeschützt. kann es daran vielleicht iegen? [...] hab dann neue ordner erstellt mit 0777 und die sind ebenfalls schreibgeschützt.
Das wird wohl an der voreingestellten umask liegen:
http://www.php.net/umask
http://www.linuxfibel.de/access.htm#maske

ich hab das schreibgeschützt dann weg gemacht aber es bleibt net weg.
Nur der Eigentümer der Datei / des Verzeichnisses (von root abgesehen) kann die Zugriffsrechte ändern.

kann es evtl mitunter daran leigen?

$sql = "SELECT kunde_name FROM gruppe WHERE gruppe_id=$gruppe_id";
$res = mysql_query($sql, $conn);
Wo sollte hier der Variablen $kunde_name ein Wert zugewiesen werden? Du musst zunächst einmal mysql_fetch_*() verwenden, um an die Werte aus der Abfrage zu kommen:
http://tut.php-q.net/mysql-select-php.html

nurion
28.06.2006, 16:05:29
hallo, das hatte ich ja aber wohl leider falsch...es hatte nämlich nicht funktioniert.
nach längerem rumprobieren hab ich s endlich geschafft das es geht. siehe hier:

if(mysql_num_rows($result)) {
while($row = mysql_fetch_assoc($result)) {
$kunde = $row['kunde_name'];
$dir = "../Projekte/$kunde/$name";
}
} else {
echo "Fehler<br />\n";
}


mkdir($dir, 0777);


sollte stimmen oder gibts ne bessere variante?

xabbuh
28.06.2006, 16:41:10
Die while-Schleife ist überflüssig, wenn du sowieso nur einen Datensatz ausliest.

nurion
28.06.2006, 16:51:33
ok, kann sein. muss ich dann mal weg machen ;)
danke!