Bonjour à tous,

Je crée des images depuis mon script sur mon serveur linux, et, via un protocole SFTP, je les transfert sur un autre poste en Windows.

Rien à faire, sur mon serveur Linux, je n'arrive pas à ouvrir un fichier en conservant les retours chariots (sauts de lignes) tels qu'ils sont.
Du coup, mes images sont altérés et mes zip sont corrompus.

J'ai fait des tests, et c'est bien dès le fopen (ou file_get_contents) qu'il perd l'information... Tous les \r\n se transforment en \n.

Je crois que j'ai tout essayé, le paramètre 'b' ou 't' n'a pas l'air d'être prit en compte.
Le paramètre auto_detect_line_endings ne change rien (de plus, la logique voudrait qu'il reste à 0, comme il est par défaut).

Voici mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
	public function file_get_contents2($filename) { // Redéfinition de la fonction file_get_contents2 pour avoir la main dessus
		//return file($filename, FILE_USE_INCLUDE_PATH);
		if($fp = fopen($filename, 'rb')) {
			$buffer = fread($fp, filesize($filename));
			fclose($fp);
			return $buffer; // "COUCOU\r\nTEST\r\n"; //
		} else 
			return false; // */
	}
 
	public function uploadFile($local_file, $remote_file) {
		$local_file = "testFtp.txt";
		ini_set('auto_detect_line_endings', false);
		ini_set('default_charset', 'ISO-8859-1');
		$sftp = $this->sftp;
		$stream = @fopen("ssh2.sftp://$sftp$remote_file", 'wb');
		if (! $stream) {
			throw new Exception("Could not open file: $remote_file");
		} //else echo "Ouverture fichier OK.<br />";
		//$data_to_send = $this->file_get_contents2($local_file);
		$data_to_send = file_get_contents($local_file);		
 
		if (@fwrite($stream, $data_to_send) === false)
			throw new Exception("Could not send data from file: $local_file.");
 
		@fclose($stream); // */
	}
(Je ne sais pas si le ini influe sur le default_charset)

Avez vous une idée ?

Merci d'avance.