6

curl php API を使用して FTP リンクにアクセスしています。特定のサイトでは、エラー コード 9 (アクセスが拒否されました) が表示されます。ただし、リンクは IE および Firefox からアクセスできます。

次に、curlコマンドラインを実行すると、同じ「アクセスが拒否されました」という結果が得られました。

> 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 の何が問題になっていますか? ありがとう

4

3 に答える 3

7

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'.
于 2012-04-17T22:45:33.500 に答える
0

CURL エラーとは関係ありませんが、非常に明白でしたServer denied you to change to the given directory...単にアクセスの問題です...

追加usernamepasswordて問題を解決するだけです...

ブラウザで動作する理由...自動ディレクトリリダイレクトはありません..curlで動作しないのはなぜですか??? 関連するディレクトリに移動する前に、 curlは ftpログインを含む標準プロセスを 使用します

PHP経由で直接使用することができます....fopenまたはfile_get_content私が使用するチートです...ブラウザ経由でアクセスしているかのように機能します

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

魅力のように働く

于 2012-04-10T23:02:01.970 に答える