我试过 $sftp->chmod('0755', "file.zip");$sftp->chmod('0755', "file.zip");

但在这两种情况下,权限都被设置为 363。

有帮助吗?

解决方案

0755 和“0755”不是同一件事,如下所示:

<?php echo '0755' == 0755 ? 'equal' : 'not equal'; ?>;

为此,尝试删除 0755 周围的单引号。

phpseclib 期望权限表示为八进制值(“0755”被转换为十进制值 - 而不是八进制值)的原因是因为这就是 ftp_chmod 这样做了,就是这样 Net_SFTP::chmod() 是仿照的。(实际上,几乎所有 phpseclib 的 SFTP API 都是根据 PHP 的 FTP 扩展 API 建模的)

其他提示

猜测权限是1363。换句话说,八进制(755)。这完全是猜测,但我建议 chmod 函数采用十进制模式,而不是八进制模式。

您可以使用

$sftp->chmod(0755, $file);

您不应将权限输入 phpseclib chmod() 函数作为字符串。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top