【发布时间】: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返回什么?