【问题标题】:php upload local file to ftp serverphp上传本地文件到ftp服务器
【发布时间】:2014-03-22 05:17:00
【问题描述】:

我知道 ftp_put 方法将文件从本地服务器计算机上传到 ftp 服务器,但是当我尝试执行这样的简单脚本时使用它时遇到问题:

 <?php
// connect and login to FTP server
$ftp_server = "ftp.example.com";
$ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server");
$login = ftp_login($ftp_conn, $ftp_username, $ftp_userpass);
$file = "localfile.txt";
// upload file
if (ftp_put($ftp_conn, "serverfile.txt", $file, FTP_ASCII))
{
echo "Successfully uploaded $file.";
}
else
{
echo "Error uploading $file.";
}

// close connection
ftp_close($ftp_conn);
?>  

操作成功,只是上传到我的ftp服务器的文件总是零字节大小!

我也尝试启用被动模式,但它仍然上传一个空文件。

【问题讨论】:

    标签: php upload ftp


    【解决方案1】:

    尝试启用track_errors 并访问$php_errormsg

    ini_set('track_errors', 1);
    // put operation
    // if error
    var_dump($php_errormsg);
    

    【讨论】:

    • 我试过这个,我得到了我的 ftp 服务器路径的一个长版本,最后是一个 NULL 字。
    • 我正在使用一个免费的主机 calle bytehost.com,会不会是拒绝 php 写权限?
    • 关于此与托管支持的联系
    【解决方案2】:

    我有同样的问题。当我将“FTP_ASCII”更改为“FTP_BINARY”时,它解决了我的问题并按预期上传了文件。

    【讨论】:

      【解决方案3】:

      我也遇到过这种情况。有点晚了,但我想我会发布我的解决方案:

      $file_name = "localfile.txt";
      

      从现有文件中获取内容

      $content = file_get_contents('http://www.somewhere.com/'.$file_name);
      

      ...或制作临时文件内容

      $content = "This is content";
      

      上传文件

      // connect
      $conn_id = ftp_connect($host);
      $login = ftp_login($conn_id, $username, $password);
      ftp_pasv($conn_id, true);
      
      // create
      $tmp = fopen(tempnam(sys_get_temp_dir(), $file), "w+");
      fwrite($tmp, $content);
      rewind($tmp);
      
      // upload
      $upload = ftp_fput($conn_id, "serverfile.txt", $tmp, FTP_ASCII);
      
      // close
      ftp_close($conn_id);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-05-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多