Я безуспешно пытался загрузить зашифрованный файл на FTP-сервер без предварительной записи его в файловую систему (что имеет последствия для безопасности)
Я пытался использовать proc_open
, а затем ftp_fput
, но безрезультатно, я думаю, потому что поток, созданный в proc_open
, не fstat
способен
Вот код
<?php
$ciphertext = 'sadfasfasdf90809sf890as8fjwkjlf';
//The Descriptors
$descriptorspec = array(
0 => array("pipe", "r"), // stdin
1 => array("pipe", "w"), // stdout
2 => array("pipe", "w") // error
);
$process = proc_open('cat', $descriptorspec, $pipes);
if (is_resource($process)) {
fwrite($pipes[0], $ciphertext);
fclose($pipes[0]);
//Debug test to proce that $pipes[1] is a valid stream
//while(!feof($pipes[1])) {
// $content .= fgets($pipes[1],1024);
//}
//FTP connection etc etc OMMITTED to save space.
$upload = @ftp_fput($conn_id,$dir."/".$ftp_file.$extenstion,$pipes[1],FTP_BINARY);
fclose($pipes[1]);
// Check upload status
echo ('upload '. ($upload ? 'true':' false'));
}
?>
Я надеюсь, что кто-то может помочь или предложить какие-либо улучшения или альтернативные методы.
Спасибо
Phil