繁体   English   中英

使用PHP CURL中的FTP

[英]Using FTP from PHP CURL

我无法弄清楚如何使用CURL的FTP,特别是如何从我的PHP代码发出FTP命令:

<?php
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'ftp://ftp.microsoft.com/');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    curl_setopt($ch,CURLOPT_POSTQUOTE,array('CWD bussys/','LIST')); /* ?!! */

    echo '<hr><pre>'.htmlspecialchars(curl_exec($ch)).'</pre><hr>';
?>

在我上面的例子中,我想获得bussys的目录列表,但我获得了主(FTP根)目录的列表。

顺便说一句,我尝试了以下组合:

  • LIST bussys/
  • CWD bussys, LIST -a

我搜索了一种改变工作目录的方法,但找不到任何东西。

最终对我CURLOPT_URL是在CURLOPT_URL包含该文件夹。 另外,单独的文件夹是不够的,我不得不包括一个尾随正斜杠/

所以如果对我bussys/东西对你bussys/ ,那么设置下面的url结构和CURLOPT_FTPLISTONLY可以得到bussys/的内容。

curl_setopt($ch, CURLOPT_URL, 'ftp://ftp.microsoft.com/bussys/'); curl_setopt($ch, CURLOPT_FTPLISTONLY, TRUE);

我不需要CURLOPT_POSTQUOTE CWD选项来获取嵌套目录内容。

如果您想使用curl,请使用CURLOPT_CUSTOMREQUEST选项。

见下面的示例代码。

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "ftp://192.168.0.129");
curl_setopt($curl, CURLOPT_USERPWD, "sru:sru");
curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1) ;
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'CWD /a'); // change directory
curl_exec($curl);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'MLSD'); // get directory list
$ftp_result=curl_exec($curl);
echo $ftp_result;

它回来了

type=dir;modify=20130319024302; test

test是a的子目录。

我认为你必须使用ftp_connect。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM