簡體   English   中英

通過終端將PHP生成的CSV文件上傳到SFTP服務器

[英]Uploading a PHP generated CSV file to SFTP server via terminal

我有一個PHP文件,該文件使用以下代碼生成CSV文件:

$filename = $file."_".date("Y-m-d_H-i",time());
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: csv" . date("Y-m-d") . ".csv");
header("Content-disposition: filename=".$filename.".csv");
print $csv_output;

我沒有包括創建內容的代碼,因為它的工作正常。 我需要做的是使用終端運行該文件,並將結果上傳到sftp服務器。 我可以在終端中很好地連接到服務器。

我一直在終端中使用php命令來生成結果CSV。 但是,它不會像在瀏覽器中運行時那樣生成CSV。 它所做的是將CSV生成為字符串。

有沒有辦法像瀏覽器一樣將CSV生成為文件,以便我可以在終端中抓取並將其上傳到SFTP服務器? 另外,也可以使用以下命令回顯從PHP文件生成的字符串並自己創建CSV:

echo "boo,to,you">file.csv

只需將php輸出重定向到一個臨時文件並上傳該文件。

php yourscript.php > /tmp/file.csv
echo "put /tmp/file.csv" | sftp user@example.com

如果要在沒有臨時文件的情況下執行此操作,則不能僅使用(OpenSSH) sftp因為它無法讀取要從stdin上傳的內容。 (OpenSSH) scp都不能。


當然,如果更適合您的任務,則可以從PHP代碼本身生成文件。

只需使用file_put_contents()

file_put_contents("/tmp/file.csv", $csv_output);

請參閱如何用PHP寫入文件?


如果遠程服務器是* nix(理解cat )並允許外殼程序訪問,則@MarcB的建議應該起作用。

php yourscript.php | ssh user@example.com 'cat > file.csv'

雖然顯然不再是“ SFTP上傳”了。


生成文件時,請勿使用header() 標頭僅在Web服務器環境中有意義,而在將PHP用作Shell中的腳本語言時則沒有意義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM