2010-12-18 122 views
4

我正在使用PHP函數ssh2_scp_send將文件從一臺服務器傳輸到另一臺服務器。有趣的是,如果我以八進制形式(即0644)寫入權限,則一切正常。如果我用引號括起來,或者使用變量,這不再適用。PHP ssh2_scp_send文件權限

更清晰: 這工作:ssh2_scp_send($conn, $localFile, $remoteFile, 0644);

不起作用:ssh2_scp_send($conn, $localFile, $remoteFile, "0644");

不起作用:$permission=0644;ssh2_scp_send($conn, $localFile, $remoteFile, $permission);

任何人有任何想法,爲什麼是這樣的話?

回答

2

decoct()的機會。我不確定這會起作用,但你可以嘗試。 您還可以嘗試的另一件事是將權限值存儲到常量中define()

+0

輝煌,這真的指出我在正確的方向:我需要octdec()函數!謝謝 – 2010-12-18 00:32:19

1

該字符串可能會被解釋爲十進制。

另外,什麼類型是$permission?嘗試使用var_dump()就可以了。它可能也是一個字符串。

$a = 0644; 

$b = (int) "0644"; 

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

See it on codepad.org

+0

非常好斑點亞歷克斯! – 2010-12-18 00:28:03

+0

如何將0644轉換爲420,因爲這似乎是系統需要的? – 2010-12-18 00:28:38

+0

@Adrien Hingert查看''''''''''''''''[見這個答案](http://stackoverflow.com/questions/4475866/php-ssh2-scp-send-file-permissions/4475888#4475888))。 – alex 2010-12-18 00:34:56