我正在使用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
Run Code Online (Sandbox Code Playgroud)
但是该链接在Firefox中可以正常工作。这里的cUrl有什么问题?谢谢
尝试摆弄curl的选项--ftp-method
Run Code Online (Sandbox Code Playgroud)--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'.
CURL 它与错误无关,非常明确Server denied you to change to the given directory......这只是一个访问问题......
添加username并password简单地解决问题...
为什么它在浏览器上工作......没有自动目录重定向..为什么它在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'));
Run Code Online (Sandbox Code Playgroud)
像魅力一样工作