[英]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.