【发布时间】:2013-12-18 03:56:20
【问题描述】:
在这上面花了几个小时,我不走运。该脚本直到昨天都运行良好。该脚本生成 XML 并将其作为文件 (5kb) 转储到远程 FTP 服务器。剧本没有改变,我们的主人也没有改变任何东西。 FTP 服务器公司已经改变了一些东西(他们昨天说 IP 改变了)(但除此之外没有任何声明)。这个 IP 导致另一个 ftp_server 运行良好。
当我尝试运行脚本时,无论是否“ftp_pasv($conn_id, true);”都会出现以下错误是否存在/禁用:
Warning: ftp_fput() [function.ftp-fput]: Opening ASCII mode data connection in ...
然后它给出下面包含“FTP_ASCII”的行。
当我只有 ft_pasv 部分时(根据原始脚本),仍然会出现以下附加错误:
Warning: ftp_fput() [function.ftp-fput]: data_accept: SSL/TLS handshake failed in ...
这是与上述错误相同的行。
它们最初使用自签名 SSL。现在,由于我的问题,他们现在使用一家知名公司发布的“正确”SSL。连接时 Filezilla 上不会显示错误。
重要的是,我可以毫无问题地通过 Filezilla 上传,无论是否使用被动模式
脚本中以下代码上方的代码对于生成文件是正确的,因为它显示在脚本页面上,一旦加载。它只是不会将文件转储到服务器上。这是连接到服务器的位:
//Connect to the FTP server
$ftp_server = 'import.ftpserverdomain.com';
$ftp_user_name = 'CORRECT-USERNAME';
$ftp_user_pass = 'CORRECT-PASSWORD';
// set up basic ssl connection
$conn_id = ftp_ssl_connect($ftp_server) or die("CONNECTION ERROR");
// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass) or die("LOGIN ERROR");
$directory = ftp_pwd($conn_id); // /
ftp_pasv($conn_id, true);
$fp = fopen($filename, 'w');
fputs($fp,$file_contents);
fclose($fp);
$fp = fopen($filename, 'r');
$path_with_file = $directory.$filename;
if (ftp_fput($conn_id, $path_with_file, $fp, FTP_ASCII)) {
echo "Successfully Uploaded $File\n";
} else {
echo "There was a problem while uploading $File\n";
}
fclose($fp);
unlink($filename);
ftp_close($conn_id);
非常感谢任何帮助。抱歉,如果我缺少任何信息。我很乐意提供。
【问题讨论】:
-
如果 FTP 服务更改了设置,他们是否没有为您提供有关它的新信息?任何在没有额外支持的情况下进行更改的人实际上都应该这样做。您是否尝试过使用不同的设置?尝试使用与 FileZilla 相同的 FTP 登录。
-
感谢您的回复。他们说这只是发生了 IP 更改,包括域切换。此开关在 Filezilla 现在运行时起作用。因此,他们声称不需要向我们提供其他任何东西。我有点需要一些代码帮助,因为我的开发人员已经抛弃了我!除了被动模式、ftp_server、ftp_user_name、ftp_user_pass 和 ftp_ssl_connect,我还能尝试复制我正在使用的 Filezilla 设置吗?谢谢。
-
不客气。您是否尝试过
ftp_connect而不是ftp_ssl_connect?可能 SSL 套接字无法再访问了。 -
再次感谢您的意见。我试过这个,它说,“警告:ftp_login() [function.ftp-login]:策略需要 SSL”,这在没有 SSL 的 Filefilla 中也是如此。你还有其他建议吗?谢谢。
-
不客气(再次) ;-) 抱歉,我不知道还能告诉你什么。对我来说,我“不再使用”的(当时)托管公司曾经多次改变事情而没有增加重要的技术支持。我确信它与您的 FTP 服务/托管公司有关,然后它很可能是一个“传播”问题,它可以在 24 小时内开始工作。虽然很难说。我希望我能提供更多帮助。