【发布时间】:2020-01-31 18:36:04
【问题描述】:
我在删除或使用带有 cURL 的 rm 时遇到了一个奇怪的问题。当我尝试在 FileZilla 上使用相同的凭据删除或移动文件时,它工作得很好,但在通过 cURL 运行它时不起作用。我的代码有什么问题吗?
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $sftp_server.$file_name);
curl_setopt($ch, CURLOPT_USERPWD,$user_pwd);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch, CURLOPT_PROTOCOLS,CURLPROTO_SFTP);
curl_setopt($ch, CURLOPT_QUOTE, array('rm ~/folder/' . $file_name));
curl_exec($ch);
curl_close($ch);
我也没有任何问题使用 cURL 下载 SFTP 文件。
当我var_dump() curl 结果时,我得到一个权限被拒绝“curl: (21) rm command failed: Permission denied”。
感谢您的帮助!
【问题讨论】:
-
如果使用与 FileZilla 相同的凭据也能正常工作,那么它看起来像是权限问题。
-
@Triby 这就是我的想法,但权限在什么级别? PHP服务器?我应该寻找什么?
-
我认为是关于服务器权限(Apache,IIS,nginx),通常只有
root user和文件所有者可以删除文件。 -
“不起作用”到底是什么意思?你得到什么样的回应?
-
@ArSeN 它不会删除文件,并显示权限被拒绝,但是当我使用 FileZilla 时我没有收到错误,我能够成功删除文件。