我有php代码,它从两个数据库表生成一个xml文件,并将xml文件保存到网站文件夹结构中的一个目录中。xml文件正在正确保存。保存文件后,需要通过ftp将其发送到外部ftp服务器文件夹。
function send_ftp($source_file, $destination_file)
{
// set up basic connection
$ftp_server = 'svr02.xxxxxxx.com';
$connection_id = ftp_connect('svr02.xxxxxxx.com');
// login with username and password
$ftp_user_name = 'xxxxx';
$ftp_user_pass = 'xxxxx';
$login_result = ftp_login($connection_id, $ftp_user_name, $ftp_user_pass);
ftp_pasv($connection_id, true);
// upload the file
$upload = ftp_put($connection_id, $destination_file, $source_file,
FTP_ASCII);
// close the FTP stream
ftp_close($conn_id);
}
连接似乎很好,我还可以使用FileZilla中相同的连接和凭据手动上载xml文件。
我如何追踪问题所在,以及我是否正确使用ftp_put方法?
感谢任何帮助...
2017年5月22日更新我添加了一个函数,返回一个var_转储,作为我可以在字符串或电子邮件中使用的内容。
function var_dump_ret($mixed = null) {
ob_start();
var_dump($mixed);
$content = ob_get_contents();
ob_end_clean();
return $content;
}
有了这些代码,我就可以得到var dump输出了
$login_result = @ftp_login($connection_id, $ftp_user_name, $ftp_user_pass);
$dump_content = var_dump_ret(var_dump($login_result));
send_to_dev('ftp login result', $dump_content);
登录结果的var_dump为“null”,即使它应该为true或false。我不认为我在这一点上得到一个良好的登录。
根据我更改为使用var_导出函数获取变量的建议,更新2017年5月23日。ftp_连接失败;返回false,因此代码甚至没有打开ftp流。我知道ftp服务器前面不应该有“ftp://”,我想不出其他任何东西。此ftp代码正在GoDaddy上的共享主机上运行。你认为戈达迪阻止它有问题吗?
出于安全目的,Godaddy共享服务器主机阻止出站连接。这就是ftp_connect无法打开连接的原因。