やってみ$sftp->chmod('0755', "file.zip");
て$sftp->chmod('0755', "file.zip");
ただし、どちらの場合も、代わりに権限が363に設定されています。
0755と「0755」は、このように示されているものと同じではありません。
<?php echo '0755' == 0755 ? 'equal' : 'not equal'; ?>;
そのため、0755前後の一重引用符を削除してみてください。
phpseclibがパーミッションが8進値として表されることを期待する理由(「0755」は8進値ではなく10進値にキャストされます)は、それがその方法ftp_chmod
であり、それNet_SFTP::chmod()
がモデル化されているためです。(実際、phpseclibのSFTP APIのほとんどすべては、PHPのFTP拡張APIをモデルにしています)
推測では、パーミッションは1363です。言い換えると、octal(755)です。これは完全な推測ですが、chmod関数が8進数モードではなく10進数モードを使用していることをお勧めします。
使用できます
$sftp->chmod(0755, $file);
phpseclibchmod()
関数に文字列として権限を入力しないでください。