Datei mit ftp funktion erzeugen

deusfalsus

Erfahrenes Mitglied
Wie kann ich unter Nutzung eines ftp-accounts auf dem Server eine Datei erzeugen?
Ziel ist es, einen string als xlm-Datei zu speichern.
 
PHP:
<?php

$xml = 'I am a XML String';
$file = './dir/temp.xml';

$ftp_c = ftp_connect('ftp.domain.net', 21);
$ftp_l = ftp_login($ftp_c, 'user', 'pass');

if(!$ftp_c OR !$ftp_l)
{
  echo 'Verbindung fehlgeschlagen';
  exit;
}

$fp = fopen($file, 'w');
fwrite($fp, $xml);
fclose($fp);

$upload = ftp_put($ftp_c, 'test.xml', $file, FTP_ASCII);

if(!$upload)
{
  echo 'Upload fehlgeschlagen';
  exit;
}
ftp_close($ftp_c);
unlink($file);
?>

Hilft dir das weiter? php.net hat ansonsten auch noch viel Hilfe über die Funktionsweise von Dateien.
 
Es scheitert schon am fopen($file, 'w'), da das skript, das den Befehl ausführt, dies als Nutzer wwwrun tut und somit keine Schreibrechte auf dem Server hat.
Um die xml-Datei schreiben zu können, muss ich es als anderer user tun.
Darum gehts mir.
 
Dann sag das doch ;)
Dann arbeiten wir eben mit Streams.

PHP:
<?php
$xml = 'I am a XML String';

$ftp_c = ftp_connect('ftp.domain.net', 21);
$ftp_l = ftp_login($ftp_c, 'user', 'pass');

if(!$ftp_c OR !$ftp_l)
{
  echo 'Verbindung fehlgeschlagen';
  exit;
}

$fp = fopen('php://temp/', 'r+');
fwrite($fp, $xml);
rewind($fp);

$upload = ftp_nb_fput($ftp_c, 'test.xml', $fp, FTP_ASCII);

if(!$upload)
{
  echo 'Upload fehlgeschlagen';
  exit;
}
fclose($fp);
ftp_close($ftp_c);
?>
 
Zuletzt bearbeitet:
Hier noch einmal kurz überarbeitet, die Benutzung einer Funktion in diesem Kontext ist gar nicht nötig und [phpf]fclose[/phpf] hab ich auch unterschlagen.

PHP:
<?php
$xml = 'I am a XML String';

$ftp_c = ftp_connect('ftp.domain.net', 21);
$ftp_l = ftp_login($ftp_c, 'user', 'pass');

if(!$ftp_c OR !$ftp_l)
{
  echo 'Verbindung fehlgeschlagen';
  exit;
}

$fp = fopen('php://temp/', 'r+');
fwrite($fp, $xml);
rewind($fp);

$upload = ftp_nb_fput($ftp_c, 'test.xml', $fp, FTP_ASCII);

if(!$upload)
{
  echo 'Upload fehlgeschlagen';
  exit;
}
fclose($fp);
ftp_close($ftp_c);
?>
 
Zurück