我无法弄清楚如何使用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获取嵌套目录内容的选项.
如果您想使用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 。
| 归档时间: |
|
| 查看次数: |
8347 次 |
| 最近记录: |