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