【问题标题】:Updating CSV file in FTP server in PHP [duplicate]用PHP更新FTP服务器中的CSV文件[重复]
【发布时间】:2020-02-19 16:58:21
【问题描述】:

我正在尝试更新外部 FTP 服务器中的 CSV 文件,我尝试遵循基本的 ftp_fput() 但它不起作用。当我运行这个不需要的脚本时,文件没有更新,并且正在下载一个空白的 CSV 文件。我一直在尝试解决这个问题,但找不到解决方案

<?php

// connect and login to FTP server
//ftp setup
 $ftp_server = "ftp.test.test.co.uk";
        $ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server");
        $ftp_username='ftp_username';
        $ftp_userpass='ftp_userpass';
      $login = ftp_login($ftp_conn, $ftp_username, $ftp_userpass);

//local DB setup
$servername = "localhost";
$username = "root";
$password = "TEST";
$dbname= "TEST";

// Create connection
$conn = new mysqli($servername, $username, $password,$dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
//END database connection//



$sql = "SELECT sku,SUM(quantity) as quantity FROM tbl_old_books GROUP BY isbn";

$result = $conn->query($sql);

         header("Content-Disposition: attachment; filename=AllOpenOrders.csv");
         header("Content-Type: application/csv; ");

         // file creation
       $file = fopen('php://temp', 'W');

        $header = array("SKU","QUANTITY");
        fputcsv($file, $header);


      if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
            fputcsv($file, $row );
        }
    }

 $remote_path = "/export/AllOpenOrders.csv";

ftp_fput($ftp_conn, $remote_path, $file, FTP_BINARY, 0);


  fclose($file);
ftp_close($ftp_conn);
?>

【问题讨论】:

  • 什么部分“不工作”?
  • 现有CSV文件未更新,文件权限为777但仍没有获取新记录。
  • @JayBlanchard fopen 移动不相关。 OP 正在创建一个内存缓冲区。
  • 不起作用。我把那个 W 改成了 A。
  • @Sylvestr 我们需要minimal reproducible example。我很确定您 90% 的代码与您当前的问题无关。首先,您可以使用 PHP 将本地测试文件上传到您的 FTP 服务器吗? + 您是否从您的 FTP 函数调用中收到任何 PHP 错误/警告? ftp_fput 返回什么?

标签: php ftp


【解决方案1】:

当您写入文件时,您的文件处理程序$file 指向文件末尾。 ftp_fput 没什么可写的了。

在写入 FTP 之前,您可以使用 rewind($file); 重置文件开头的文件指针:rewind documentation

【讨论】:

  • 感谢您的回答,但在我的临时文件中添加行后,如果我 rewind() 该文件显示错误消息“流不支持搜索”
  • 尝试将此建议与$file = fopen('php://temp', 'w');(小写w)+您使用的是什么版本的PHP?
猜你喜欢
  • 1970-01-01
  • 2018-10-02
  • 1970-01-01
  • 1970-01-01
  • 2021-06-30
  • 1970-01-01
  • 1970-01-01
  • 2017-05-18
  • 1970-01-01
相关资源
最近更新 更多