在PHP中,您有wrappers for ftp and ftps允許您使用fopen訪問FTP上的文件。使用包裝器訪問Microsoft FTP服務上的文件時,「無法打開流:FTP服務器報告550」
我想使用包裝下載文件作爲流。
我的簡化代碼:
// 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);
錯誤:
Warning: fopen(ftp://[email protected]/directory-with-dash/file.mp3): failed to open stream: FTP server reports 550 /directory-with-dash/file.mp3: The system cannot find the path specified. in /var/www/ftp.php on line 4
更多信息:與0123一起使用時
- 相同的URL工作正常在同一臺機器上。
- 使用PHP的FTP extension下載文件工作正常
- FTP服務器
220 Microsoft FTP Service
響應和215 Windows_NT
- FTP服務器可以在
Warning: filesize(): stat failed for...
allow_url_fopen
設定處理被動模式- 使用
filesize($url);
結果是On
- 同代碼對不同的FTP服務器工作正常,
215 UNIX Type: L8
什麼可能導致此問題?
編輯:
我已經注意到,當您連接到FTP的Microsoft FTP Service
不把你的根文件夾,但在子文件夾:
/username
該子文件夾不得在該URL當您使用wget
或Web瀏覽器:
ftp://username:[email protected]/username/directory-with-dash/file.mp3 // Not available in Chrome ftp://username:[email protected]/directory-with-dash/file.mp3 // Works fine in Chrome
我公頃我已經在PHP代碼中嘗試了這兩個url,但我仍然得到相同的錯誤。
(我輸入錯了)
我成功地爲不同的FTP服務器的連接。這看起來與'Microsoft FTP服務'有些不協調。編輯。 – ANisus
我假設_「系統找不到指定的路徑」_是由服務器返回的。您可以訪問服務器日誌以查看此請求轉換爲什麼本地路徑? – CodeCaster
@CodeCaster是的,它似乎來自FTP服務器。我無法訪問FTP服務器日誌。也許我可以要求他們。 – ANisus