2010-12-18 98 views
4

PHP関数ssh2_scp_sendを使用して、あるサーバーから別のサーバーにファイルを転送しています。興味深いのは、8進形式(つまり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()にチャンスを与えます。私はこれがうまくいくかどうかはわかりませんが、試してみることができます。 あなたが試みることができるもう1つのことは、定数にアクセス許可の値を格納することです。define()

+0

これは本当に正しい方向に私を指摘しました。私はoctdec()関数が必要でした!ありがとう –

1

文字列は10進数として解釈されます。

また、$permissionはどのタイプですか?そこにvar_dump()を使ってみてください。それはあまりにも文字列かもしれません。

$a = 0644; 

$b = (int) "0644"; 

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

See it on codepad.org

+0

非常によく見つかったアレックス! –

+0

これはシステムが望んでいるように思われるので、どのように0644を420に変換するのですか? –

+0

@Adrien Hingert 'decoct()'([この回答を見る])(http://stackoverflow.com/questions/4475866/php-ssh2-scp-send-file-permissions/4475888#4475888)を参照してください)。 – alex

関連する問題