Загрузка сгенерированного PHP файла CSV на SFTP-сервер через терминал

У меня есть файл 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

0

Решение

Просто перенаправить php вывести во временный файл и загрузить файл.

php yourscript.php > /tmp/file.csv
echo "put /tmp/file.csv" | sftp [email protected]

Если вы хотите сделать это без временного файла, вы не можете сделать это только с помощью (OpenSSH) sftp так как он не может читать содержимое для загрузки со стандартного ввода. Ни один (OpenSSH) scp Можно.


Конечно, вы можете создать файл из самого PHP-кода, если это лучше подходит для вашей задачи.

Просто используйте file_put_contents():

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

Увидеть Как записать в файл на PHP?


Предложение @MarcB должно работать, если удаленный сервер * nix (понимает cat) и разрешает доступ к оболочке.

php yourscript.php | ssh [email protected] 'cat > file.csv'

Хотя очевидно, что это больше не «загрузка SFTP».


При создании файла не используйте header(). Заголовки имеют смысл только в среде веб-сервера, а не когда вы используете PHP в качестве языка сценариев в оболочке.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]