2010-12-18 3 views
4

Ich verwende die PHP-Funktion ssh2_scp_send, um Dateien von einem Server auf einen anderen zu übertragen. Das Interessante ist, dass wenn ich die Erlaubnis in ihrer oktalen Form schreibe (zB 0644), alles gut funktioniert. Wenn ich dies stattdessen in Anführungszeichen einfüge oder eine Variable verwende, funktioniert das nicht mehr.PHP ssh2_scp_send Dateiberechtigungen

Um deutlicher: Dies funktioniert: ssh2_scp_send($conn, $localFile, $remoteFile, 0644);

funktioniert nicht: ssh2_scp_send($conn, $localFile, $remoteFile, "0644");

nicht funktioniert: $permission=0644;ssh2_scp_send($conn, $localFile, $remoteFile, $permission);

Jeder hat eine Idee, warum dies der Fall ist?

Antwort

2

decoct() eine Chance geben. Ich bin mir nicht sicher, ob das funktioniert, aber Sie können es versuchen. Eine weitere Sache, die Sie versuchen können, ist, Berechtigungswerte in Konstanten zu speichern mit define()

+0

brilliant, das hat mich wirklich in die richtige richtung gezeigt: ich brauchte die octdec() funktion! Vielen Dank –

1

Die Zeichenfolge kann als Dezimalzahl interpretiert werden.

Und welche Art ist $permission? Versuchen Sie es mit var_dump(). Es kann auch eine Zeichenfolge sein.

$a = 0644; 

$b = (int) "0644"; 

var_dump($a, $b); // int(420), int(644) 

See it on codepad.org

+0

sehr gut spotted alex! –

+0

Wie konvertiere ich 0644 zu 420, da dies scheint, was das System will? –

+0

@Adrien Hingert Überprüfen Sie die 'deocct()' ([siehe diese Antwort] (http://stackoverflow.com/questions/4475866/php-ssh2-scp-send-file-permissions/4475888#4475888)). – alex