Datei auf anderen Webspace(Starto) kopieren
Guido Wuttig
Hi Leute
Ich habe bewusst keine Themenbereich fuer mein Anliegen ausgewaehlt, da ich nicht genau weiss, auf welchem Weg ich mein Problem loesen soll.
<problem>
Eine Datei ist mittels PHP-File-Upload hochgeladen.
Diese soll nun auf einen anderen Webspace ausgelagert werden.
Fuer diesen Webspace habe ich nur einen FTP-Zugang.
Liegt aber auf dem selben (Strato-) Server.
Unix-kenntnisse knapp ueber 0, Perl-Erfahrung unwesentlich hoeher.
</problem>
<on Strato>
PHP Version:3.0.12
Perl Version:5.004_04
</on Strato>
Eigentlich wollte ich das ganze mit PHP loesen, aber weder ein 'fopen("fpt://....")' noch ein 'fsockopen("ftp...")' brachte auch nur den Ansatz eines Erfolges.
Hab ich mich zu bloed angestellt :-)
Leider konnt ich auch via Telnet kein FTP-Programm auf dem Strato-Server finden, was mir schon ein wenig weitergeholfen hätte.
Leider kann ich mir vom Systemverwalter auch keine Usergruppe holen, welche mir das einfache Kopieren der Dateien erlaubt haette.
Mit Perl kenne ich mich nicht so gut aus.
Daher weiss ich nicht, ob auf dem Server ein FTP-Modul (Net::FTP) installiert ist.
Wie kann ich das rausfinden, oder bei Bedarf fuer mich einfuegen (includen)?
Kann mir sonst jemand eine anderen Loesungsansatz geben?
Auf eure Antworten wartend
Gruss Guido
Mit Perl kenne ich mich nicht so gut aus.
Daher weiss ich nicht, ob auf dem Server ein FTP-Modul (Net::FTP) installiert ist.
Wie kann ich das rausfinden, oder bei Bedarf fuer mich einfuegen (includen)?
Du kannst per Telnet Perl fragen, wo dessen Modulverzeichnisse sind ("perl -V") und Dich dort mal 'n bißchen umsehen ... oder Du kannst ein kleines Perl-Skript schreiben, das nichts tut, außer den FTP-Modul Deiner Wahl (da gibt es mehrere) zu "use"n, und beim Ausführen feststellen, ob das einen Fehler gibt oder nicht.
Du kannst per Telnet Perl fragen, wo dessen Modulverzeichnisse sind ("perl -V") und Dich dort mal 'n bißchen umsehen
Habe ich gemacht und nur eine "ftp.pl" gefunden.
<inhalt of ftp.pl>
...
require 'chat2.pl'; # into main
package ftp;
...
Und 'ne Menge Subroutinen wie z.B.
sub ftp'open{...}
</inhalt of ftp.pl>
Kann ich das nicht irgendwie verwenden, wenn ja wie ??
oder Du kannst ein kleines Perl-Skript schreiben, das nichts tut, außer den FTP-Modul Deiner Wahl (da gibt es mehrere) zu "use"n, und beim Ausführen feststellen, ob das einen Fehler gibt oder nicht.
Gibt wie erwartet nur Fehler egal ob.
"use: ftp;" oder "use NET:ftp;" usw. usw.
Ist ja auch klar, nachdem die Suche kein Modul zu Tage gefoerdert hat.
PS: Ich hatte mal mit Perl angefangen (1/2 Jahr) aber bis dato schon wieder alles vergessen, da mich PHP voll ueberzeugt hat.Bis zu meinem Problem :-)
Nun werde ich mich wohl doch intensiver damit beschaeftigen muessen.
Gruss Guido
Gibt wie erwartet nur Fehler egal ob.
"use: ftp;" oder "use NET:ftp;" usw. usw.
Also wenigstens beim zweiten der beiden fehlt ein Doppelpunkt, denke ich.
Du kannst Dir vermutlich Net::FTP aus CPAN holen und in einem Deiner eigenen Verzeichnisse installieren. (Im Prinzip mit dem normalen CPAN-Verfahren, aber das generierte Makefile so umschreiben, daß der Ziel-Pfad für "make install" eben Dein Verzeichnis ist und nicht irgendwas im Perl-Interpreter selbst.)
Dann müßtest Du nur noch @INC in Deinem Skript um diesen eigenen Pfad ergänzen ...
Hallo Michael
"use: ftp;" oder "use NET:ftp;" usw. usw.
Also wenigstens beim zweiten der beiden fehlt ein Doppelpunkt, denke ich.
Jooo, hab mich in der Eile vertippt.
Du kannst Dir vermutlich Net::FTP aus CPAN holen und in einem Deiner eigenen Verzeichnisse installieren. (Im Prinzip mit dem normalen CPAN-Verfahren, aber das generierte Makefile so umschreiben, daß der Ziel-Pfad für "make install" eben Dein Verzeichnis ist und nicht irgendwas im Perl-Interpreter selbst.)
Wenn ich mich nicht verguckt habe, ist das ganze NET-Modul 61.041 kB gross.
Mal abgesehen davon wird es sicherlich noch andere, kleiner Module geben, die meinen Funktionsumfang abdecken sollten.
Nun aber meine Frage:
Wenn ich mich nicht irre, kriegt man doch nur den Source und muss in dann noch auf seiner Plattform builden.
Wie aber sollte ich das machen????
Zu Hause sitz ich vor ner doofen Window$-Kiste und online laeuft irgendein Solaris.
Dort habe ich aber keinenen C-Kompiler oder aehnliches.
Ich glaub ich haeng mich lieber noch mal in PHP rein.
Irgendwie sollte ich das darunter doch auch bewerkstelligen koennen.
Was ich mich nur frage ist, egal ob nun mit Perl oder PHP,
greifen beide nicht beim Aufbau einer FTP-Verbindung oder einer Socket-Verbindung auf Systemfunktionen zurueck, die einem das System (Betriebssystem) bieten muesste??
Sprich; Kann es sein, dass das System so konfiguriert ist, dass es garnicht moeglich ist??
Ich sehe schon, ich muss wohl doch einen anderen Weg suchen, um mein Prob' zu loesen.
Danke fuer die Hilfe
Bis denno Tenno, Gruss Guido
Mal abgesehen davon wird es sicherlich noch andere, kleiner Module geben, die meinen Funktionsumfang abdecken sollten.
In Perl gibt es immer mehrere Wege.
Wenn ich mich nicht irre, kriegt man doch nur den Source und muss in dann noch auf seiner Plattform builden.
Wie aber sollte ich das machen????
Perl-Module sind Source und bleiben Source - Perl ist eine Interpretersprache!
Es gibt zwar ein Installationsverfahren mit "make" etc., aber das macht im Wesentlichen Aufrufe von Testprogrammen, um zu prüfen, ob der Modul wirklich funktioniert, und cp-Aufrufe, um den Modul in das entsprechende "site-perl"-Verzeichnis des Perl-Interpreters zu installieren (diese müßtest Du ggf. anpassen).
Zu Hause sitz ich vor ner doofen Window$-Kiste
Da ist es aber ganz einfach - in ActivePerl ist vermutlich das komplette CPAN mit drin.
und online laeuft irgendein Solaris.
Dort habe ich aber keinenen C-Kompiler oder aehnliches.
Wie gesagt: Im Prinzip müßtest Du den Source übernehmen können. Konkret bei einem FTP-Modul brennt das Installationsverfahren allerdings Angaben wie SMTP-Server usw. ein ... probiere auf dem Server mal das CPAN-Verfahren aus ("make" wird er ja wohl haben), vielleicht geht es auch ohne C-Compiler.
greifen beide nicht beim Aufbau einer FTP-Verbindung oder einer Socket-Verbindung auf Systemfunktionen zurueck, die einem das System (Betriebssystem) bieten muesste??
Sprich; Kann es sein, dass das System so konfiguriert ist, dass es garnicht moeglich ist??
Im Prinzip muß Deine Software eine socket-Verbindung zum entsprechenden Port des SMTP-Servers aufbauen. Minimal brauchst Du also TCP/IP und die passende Adresse des Servers - das ist der Grund dafür, wieso man das Problem auf vielen unterschiedlich abstrakten Ebenen angehen kann (und wieso es so viele FTP-Module in Perl gibt).
Dein socket-open war also durchaus die richtige Richtung. Und falls Du es nicht hinkriegen solltest, abstrakte Perl-Module auf dem Server zu installieren, kannst Du immer noch ihren Quelltext lesen und so in ein eigenes Skript umsetzen, daß Du nur weniger abstrakte und deshalb vielleicht bereits verfügbare Module verwendest.
Ich sehe schon, ich muss wohl doch einen anderen Weg suchen, um mein Prob' zu loesen.
Hast Du schon mal versucht, einfach das mail- oder sendmail-Kommando des Servers zu benutzen? Vielleicht ist das ja verfügbar und schon richtig konfiguriert ...
In Perl gibt es immer mehrere Wege.
Zu Hause sitz ich vor ner doofen Window$-Kiste
Da ist es aber ganz einfach - in ActivePerl ist vermutlich das komplette CPAN mit drin.Wie gesagt: Im Prinzip müßtest Du den Source übernehmen können. Konkret bei einem FTP-Modul brennt das Installationsverfahren allerdings Angaben wie SMTP-Server usw. ein ... probiere auf dem Server mal das CPAN-Verfahren aus ("make" wird er ja wohl haben), vielleicht geht es auch ohne C-Compiler.
Hat leider kein "make".
Dein socket-open war also durchaus die richtige Richtung. Und falls Du es nicht hinkriegen solltest, abstrakte Perl-Module auf dem Server zu installieren, kannst Du immer noch ihren Quelltext lesen und so in ein eigenes Skript umsetzen, daß Du nur weniger abstrakte und deshalb vielleicht bereits verfügbare Module verwendest.
Joo, soweit bin ich jetzt auch fast, aber da muss ich wohl noch ein wenig Zeit investieren, um durch den Code zu steigen.
Also nochmals Danke
Gruss Guido