2010-12-18 86 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