使用cURL / php创建新目录

时间:2018-03-14 23:17:30

标签: php curl libcurl

在我弄清楚如何使用cURL创建新目录之后,我现在想在PHP中使用它。

curl -k -v "sftp://<username>:<password>@12.34.56.78/subdomains/cdn/"
     -Q "-MKDIR /subdomains/cdn/mynewdir" --ftp-create-dirs

我发现它应该是类似下面的东西,但它仍然会遗漏一些东西(因为它还没有工作):

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "sftp://<username>:<password>@12.34.56.78/subdomains/cdn/mynewdir");
curl_setopt($ch, CURLOPT_FTP_CREATE_MISSING_DIRS, TRUE);

$result = curl_exec($ch);

if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}

curl_close ($ch);

3 个答案:

答案 0 :(得分:0)

不要将cURL用作SFTP的接口。它并没有真正做到这一点,而且它构成了一个尴尬的界面。

相反,使用PHP的SFTP本机接口,它是ssh2扩展的一部分。 ssh2_sftp_mkdir()函数将完全符合您的要求 - 这是文档中的示例代码:

<?php
$connection = ssh2_connect('shell.example.com', 22);
ssh2_auth_password($connection, 'username', 'password');
$sftp = ssh2_sftp($connection);

ssh2_sftp_mkdir($sftp, '/home/username/newdir');
/* Or:  mkdir("ssh2.sftp://$sftp/home/username/newdir"); */
?>

答案 1 :(得分:0)

经过一些进一步的研究,我发现我正在努力(使用curl)。在PHP中为我创建新目录的最简单方法就是使用mkdir

答案 2 :(得分:0)

刚经历了这个问题,以为我将来会在这里分享我的发现。

CURLOPT_FTP_CREATE_MISSING_DIRS我无法使用当前的卷发

最好的,我相信唯一可行的解​​决方案是在curl quote命令中执行mkdir(这是从根开始的)。

因此,如果您想制作

/ home / me / x / y

您必须从根目录开始进行设置(在命令行中)

curl sftp://user:pass@me.com -Q "mkdir /home/me/x/y"

对于libcurl,这仍然相同,但使用POSTQUOTE setopt