【发布时间】:2025-11-27 11:30:02
【问题描述】:
我有 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_dump 作为我可以在字符串或电子邮件等中使用的内容。
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。我认为我目前无法很好地登录。
2017 年 5 月 23 日更新 根据建议,我改为使用 var_export 函数来获取我的变量。 ftp_connect 失败;返回 false,因此代码甚至没有打开 ftp 流。我知道 ftp 服务器前面不能有 'ftp://',我想不出别的了。此 ftp 代码在 GoDaddy 上的共享主机上运行。你觉得 GoDaddy 屏蔽有问题吗?
【问题讨论】:
-
尝试在 put 命令之前转储
var_dump($connection_id, $destination_file, $source_file)以确保所有参数都正确。还有$upload运行后的值是多少? -
你试过二进制模式吗?我认为大多数 ftp 客户端默认为二进制,但你有 FTP_ASCII。
-
Also ftp_close($conn_id);应该是ftp_close($connection_id);并不是说它会对您的问题产生太大影响 -
var_dump($upload)显示什么?ftp_put是否发出任何 PHP 警告?$destination_file的格式是什么? -
我编辑了我的帖子