在PHP中,您有ftp和ftps的包装器,允许您使用fopen访问ftp上的文件。
我想使用包装器将文件作为流下载。
我的简化代码:
// 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);
错误:
警告:福朋(ftp://...@服务器。com/目录和dash/文件。mp3):无法打开流:FTP服务器报告550/目录和破折号/文件。mp3:系统找不到指定的路径。在/var/www/ftp中。php在线4
更多信息:
220 Microsoft FTP Service
和215Windows_NT
filesize($url);
导致警告:filesize(): stat失败...
allow_url_fopen
设置为On
215 UNIX类型: L8
是什么导致了这个问题?
编辑:
我注意到,当您连接到FTP时,Microsoft FTP Service不会将您放置在根文件夹中,而是放置在子文件夹中:
/用户名
使用wget
或web浏览器时,此子文件夹不得位于URL中:
ftp://username:password@server.com /username/directory-with-dash/file.mp3//Chrome不可用ftp://username:password@server.com /directory-with-dash/file.mp3//在<--plhd中工作正常##############################################################################################################
<罢工> 我在PHP代码中尝试了两个网址,但我仍然得到相同的错误。 (我打错了)
该问题是由于FTP服务器未连接到根目录(/
),而是连接到子文件夹(/username
)。
与Chrome和wget不同,PHP中的FTP包装器似乎需要完整路径,而不是相对路径:
对于Chrome,wget等:
ftp://username:password@服务器。com/目录和dash/文件。mp3
对于PHP的FTP包装器:
ftp://username:password@服务器。com/username/directory和dash/file。mp3