问题描述
在PHP中,您有,以允许您可以使用在FTP上访问文件。
我想使用包装器将文件下载为流。
我的简化代码
code> 215 Windows_NT
?
编辑:
我注意到 Microsof t FTP服务在连接到FTP时不会将您置于根文件夹中,而是存放在子文件夹中:
当您使用 wget $ c时,该子文件夹不得在URL中
lockquote
//在Chrome $ b中不可用$ b //在Chrome中正常工作
(我输入错了)
由FTP服务器不连接到根( / )而是连接到子文件夹( / username )。
与Chrome和wget不同,PHP中的FTP包装似乎需要完整路径而不是相对路径:
适用于Chrome,wget等:
对于PHP的FTP包装器:
In PHP, you have wrappers for ftp and ftps to allow you access files on an FTP using fopen.
I want to use the wrapper to download a file as a stream.
My simplified code:
// eg. $url = "ftp://username:[email protected]/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);
Error:
More Info:
- The same url works fine when used with wget on the same machine.
- Using PHP's FTP extension to download files works fine
- FTP server responds with 220 Microsoft FTP Service and 215 Windows_NT
- FTP server can handle passive mode
- Using filesize($url); results in Warning: filesize(): stat failed for...
- allow_url_fopen setting is On
- The same code worked fine against a different FTP-server, 215 UNIX Type: L8
What might be causing the problem?
Edit:
I have noticed that the Microsoft FTP Service doesn't place you in the root folder when you connect to the FTP, but in a subfolder:
This subfolder must not be in the URL when you use wget or a web browser:
(I typed it wrong)
The problem was caused by the FTP server not connecting to root (/) but rather to a subfolder (/username).
Unlike Chrome and wget, the FTP wrapper in PHP seems to require to have the full path and not the relative path:
For Chrome, wget, etc.:
For PHP's FTP wrapper:
这篇关于“未能打开流:FTP服务器报告550”当使用包装访问Microsoft FTP服务上的文件时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!