Frage von jnnkhlstn, 41

PHP copy mit Variable als Path?

Hi an alle developer da draußen,

ich habe folgendes Problem. Ich habe mir aus dem Internet eine funktion kopiert, welche das Rekursive kopieren von Verzeichnissen ermöglicht. Dafür übergeben ich per Parameter quelle und ziel Verzeichnis. Das funktioniert auch soweit. Sobald ich aber eine Variable an den Pfad hefte, dann Gib er mir einen Fehler.

Das ganze Programm wird unter Windows auf der Kommandozeile ausgeführt.

$handle = fopen("php://stdin","r");
$filename = fgets($handle, 255);

//Hier der Pfad, bei dem ich per Usereingane den Ordner bestimmen kann. Funktioniert so aber nicht. 
CopyDir("C:\\Users\\user\\Desktop\\quelle\\$filename", "C:\\Users\\user\\Desktop\\ziel");


//Die aus dem Internet kopierte Datei
function CopyDir($src, $dest, $PS = "/")
{
    if($handle = opendir($src))
    {
        if(!is_dir($dest) AND !is_file($dest)){
            mkdir($dest);
        }

        while($data = readdir($handle))
        {
            if($data == ".." or $data == "."){CONTINUE;}
            if(is_file($src.$PS.$data))
            {
                copy($src.$PS.$data, $dest.$PS.$data);
            }
            elseif(is_dir($src.$PS.$data))
            {
                if(!is_dir($dest.$PS.$data)){mkdir($dest.$PS.$data);}
                CopyDir($src.$PS.$data, $dest.$PS.$data);
            }
            else
            {
                echo "ERR: $data";
            }
        }
    }

Und das ist der Fehler auf der Kommandozeile:

Warning: opendir(C:\Users\user\Desktop\quelle\Hallo ,C:\Users\user\Desktop\quelle\Hallo ): Die Syntax f³r den Dateinamen, Verzeichnisnamen oder die Datentrõgerbezeichnung ist falsch. (code: 123) in C:\Users\user\Desktop\test.php on line 12

Warning: opendir(C:\Users\user\Desktop\quelle\Hallo ): failed to open dir: No such file or directory in C:\Users\user\Desktop\test.php on line 12

Braucht ihr noch mehr Infos? Ich hoffe sonst könnt ihr mir helfen :)

LG Jannik

Antwort
von FragiFragi2003, 32

Also ich glaub ich hat mal nen Fehler wie in Java, vllt hilfts vllt auch nicht.

Muss man bei PHP wie auch bei Java einen Public class eingeben oder sonst denn Dateinamen. Bei Java passierte mir nähmlich das ich einen anderen Dateinamen hatte als wie er in der Public class geschrieben war. Kenn mich bei PHP nicht so aus aber vllt ist das der Fehler. Nicht böse sein wenn ich Mist erzähle, bin noch 'n Kind und lern selber erst programmieren :)

Kommentar von jnnkhlstn ,

Danke für die Antwort. :D 

Nein das ist nicht der Fehler, ich Programmiere hier nämlich gerade nicht Objektorientiert und muss somit auch nix Kapseln ;)

Der Dateiname ist hier auch egal, weil ich wie gesagt hier nicht OOP mache. Somit spielt das keine Rolle

Antwort
von Malemeister, 20

Hallo,

warum liest du den Ordner aus einer Datei aus, wenn der User ihn selbst bestimmen kann? Hier würde doch ein einfacher HTTP Request reichen.

Alles andere wird dir in der Fehlermeldung bzw. Warnmeldung mitgegeben. Das musst du nur mal ins deutsche übersetzen und schon hast du deinen Fehler.

Grüße

Kommentar von jnnkhlstn ,

Danke für die Antwort.

Dieses Script wird, wie es schon in der Frage steht, auf der Konsole ausgeführt. Da hilft mir glaub ich kein HTTP Request. Es sei den ich hab das mit dem HTTP Reguest nicht richtig verstanden. 

Der User soll später bestimmen, welchen Ordner er kopieren will und wo der Zielordner ist. 

Die Fehlermeldung hab ich natürlich ins Deutsche übersetzt, ich weiß aber trotzdem nicht, was an dem Script falsch sein soll.

Kommentar von Malemeister ,

Dann schau doch mal was opendir versucht zu öffnen:

opendir(C:\Users\user\Desktop\quelle\Hallo ,C:\Users\user\Desktop\quelle\Hallo )

Das kann doch nichts werden!

Kommentar von jnnkhlstn ,

Ja, das ist mir klar das dass so nix wird. Ich verstehe nur nicht warum er das so macht.

Kommentar von Malemeister ,

Woher sollen wir dir das jetzt sagen?


Wir wissen doch nicht mal was in der Datei steht, usw.

Zeig doch mal ein wenig Eigeninitiative und Debugge. Arbeite mit var_dump, usw.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten