使用PHP CURL中的FTP

Chr*_*ian 6 php ftp 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>';
?>
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我想得到一个bussys的目录列表,但我得到一个主要(FTP根目录)列表.

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

  • LIST bussys/
  • CWD bussys, LIST -a

小智 5

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

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

所以,如果对我有用的东西对你有用,那么设置下面的url结构,CURLOPT_FTPLISTONLY应该得到你的内容bussys/.

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

而且我不需要CURLOPT_POSTQUOTE CWD获取嵌套目录内容的选项.


Dan*_*lov 2

如果您想使用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;
Run Code Online (Sandbox Code Playgroud)

它返回

type=dir;modify=20130319024302; test
Run Code Online (Sandbox Code Playgroud)

test是a的子目录。

我认为你必须使用 ftp_connect 。