在PHP中,你必须为FTP包装和FTPS允许您访问使用FTP文件的fopen 。
我想使用包装下载文件流。
我的简化代码:
// eg. $url = "ftp://username:password@server.com/directory-with-dash/file.mp3";
$url = 'ftp://' . urlencode($username) . ':' . urlencode($password) . '@' . $server . $path . '/' . $filename;
$ctx = stream_context_create(array('ftp' => array('resume_pos' => 0)));
$fin = fopen($url, 'r', false, $ctx);
错误:
警告:FOPEN( FTP://...@server.com/directory-with-dash/file.mp3 ):未能打开流:FTP服务器报告550 /directory-with-dash/file.mp3:系统不能找不到指定的路径。 在第4行/var/www/ftp.php
更多信息:
- 当用于相同的URL工作正常的wget在同一台机器上。
- 使用PHP的FTP扩展下载文件工作正常
- FTP服务器响应
220 Microsoft FTP Service
和215 Windows_NT
- FTP服务器可以处理被动模式
- 使用
filesize($url);
结果Warning: filesize(): stat failed for...
-
allow_url_fopen
设置为On
- 相同的代码工作得很好针对不同的FTP服务器,
215 UNIX Type: L8
什么可能是造成问题的原因?
编辑:
我已经注意到了Microsoft FTP Service
,当您连接到FTP不把你的根文件夹,但在子文件夹:
/用户名
该子文件夹不能是在URL中当您使用wget
或Web浏览器:
FTP://用户名:password@server.com/username/directory-with-dash/file.mp3 //无法在Chrome中使用FTP://用户名:password@server.com/directory-with-dash/file.mp3 //在Chrome中工作正常
我试图在PHP代码这两个URL,但我得到了同样的错误依然。 (我输入错了)