PHP脚本无法上传到FTP服务器 -

时间:2013-09-18 15:51:08

标签: php ftp

花了好几个小时,我运气不好。这个脚本完美地工作到昨天。该脚本生成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);

非常感谢任何帮助。对不起,如果我缺少任何信息。我很乐意提供任何。

2 个答案:

答案 0 :(得分:1)

听起来像PHP无法找到你的CA Certs,如果你在linux机器上运行它,这是我以前遇到过的。一些搜索应该有所帮助,但基本上PHP的OpenSSL集成需要指向你的cacerts目录,以便它可以使用它们来验证它试图进行的SSL连接。

答案 1 :(得分:0)

我解决了这个问题。希望这有助于某人。问题原来是服务器(HostGator)。他们不允许在共享帐户上通过TLS进行FTP。

尽管这项工作已有一年,但切换主机解决了这个问题。