我正在尝试使用 ftp_fget
和 fgetcsv
函数读取远程服务器上的 csv 文件。在读取远程服务器上的文件时,我已经多次练习这个,直到现在它工作正常。
我不明白为什么 ftp_fget 会返回此错误:bind() failed: Permission denied (13)
。
此外,我也找不到关于此错误消息的任何真正解释。
给我远程服务器访问权限的客户说它是 Windows Server。
$distant_folder = "/myfolder/";
$filename = "myfile.csv";
$ftpstream = ftp_connect($ftp_server);
$login = ftp_login($ftpstream, $ftp_user, $ftp_pass);
if($login){
$tmp_handle = fopen('php://temp', 'r+');
if (ftp_fget($ftpstream, $tmp_handle, $distant_folder.$filename, FTP_ASCII)){
// do stuff with fgetcsv()...
}
}
请注意,出于保密原因隐藏了 ftp 服务器变量的值。
编辑:我找到了解决方案!
我在 ftplogin()
和 ftp_fget()
函数之间使用了 ftp_pasv($ftpstream, true);
。
最佳答案
你必须将连接切换到被动模式,所以你的 FTP 客户端需要一个端口来连接到 FTP 服务器。放在ftp_put()、ftp_get()、ftp_nlist()等之前例如:
ftp_pasv($connId, true);
$list = ftp_nlist($connId, ".");
关于php - 为什么 "ftp_fget"在 php 中返回 "bind() failed: Permission denied (13)"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24085569/