curl FTP访问被拒绝

时间:2012-04-10 17:23:30

标签: curl libcurl

我正在使用curl php API来访问FTP链接。在特定站点上,它提供错误代码9(访问被拒绝)。但是,可以从IE和Firefox访问该链接。

然后我运行curl命令行,它给出了相同的“访问deinied”结果。

> d:>\curl -v ftp://ftp1.example.com/outgoing/EHF/dbex10win_en.zip
> * About to connect() to ftp1.example.com port 21 (#0)
> *   Trying 204.50.113.145...
> * connected
> * Connected to ftp1.example.com (204.50.113.145) port 21 (#0) < 220 Microsoft FTP Service
> > USER anonymous < 331 Anonymous access allowed, send identity (e-mail name) as password.
> > PASS ftp@example.com < 230-Welcome to Example FTP site! < 230 Anonymous user logged in.
> > PWD < 257 "/" is current directory.
> * Entry path is '/'
> > CWD outgoing < 550 outgoing: Access is denied.
> * Server denied you to change to the given directory
> * Connection #0 to host ftp1.example.com left intact curl: (9) Server denied you to change to the given directory
> > QUIT < 221
> * Closing connection #0

但这个链接在Firefox中运行良好。 cUrl在这里有什么问题?感谢

3 个答案:

答案 0 :(得分:3)

尝试摆弄curl的选项--ftp-method

   --ftp-method [method]
          (FTP) Control what method curl should use to reach a file on  a
          FTP(S) server. The method argument should be one of the follow‐
          ing alternatives:

          multicwd
                 curl does a single CWD operation for each path  part  in
                 the given URL. For deep hierarchies this means very many
                 commands. This is how RFC 1738 says it should  be  done.
                 This is the default but the slowest behavior.

          nocwd  curl  does  no CWD at all. curl will do SIZE, RETR, STOR
                 etc and give a full path to the  server  for  all  these
                 commands. This is the fastest behavior.

          singlecwd
                 curl  does  one  CWD  with the full target directory and
                 then operates on the file "normally" (like in the multi‐
                 cwd  case).  This  is  somewhat more standards compliant
                 than 'nocwd' but without the full penalty of 'multicwd'.

答案 1 :(得分:0)

它与CURL无关,错误非常明确Server denied you to change to the given directory ...它只是一个访问问题......

添加usernamepassword只是解决问题......

为什么它在浏览器上工作...没有自动目录重定向..为什么它不能在curl上工作? curl将使用标准ftp进程,在您更改到相关目录之前将涉及登录

你可以通过php直接使用它.... fopenfile_get_content是我使用的作弊...就像你通过浏览器访问它一样

示例

 set_time_limit(0);
 file_put_contents("out.zip", file_get_contents('ftp://204.50.113.145/outgoing/EHF/dbex10win_en.zip'));

像魅力一样工作

答案 2 :(得分:0)

这意味着远程/ ftp服务器中不存在指定的目录,因此消息“服务器拒绝您更改到给定目录”。

该消息与您尝试将文件下载到的本地计算机无关。

登录ftp datacenter.myserver.com,查看源目录是否存在。