WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   php - problem mit fileupload von windowssytem auf linuxserver (http://www.wcm.at/forum/showthread.php?t=39346)

RaistlinMajere 13.12.2001 02:05

php - problem mit fileupload von windowssytem auf linuxserver
 
folgendes problem:

ich habe einen fileupload auf einen linuxserver. mit der funktion

$bildname = basename($bildpfad);

extrahiere ich den dateinamen vom gesamtpfad.

auf meinem windowssystem, wo ich teste, funzt alles bestens, der pfad wird übernommen, der upload auf den linuxserver paßt auch.

nur wenn ich das ganze vom linuxserver aus, d.h. von dort den fileupload mit meinem system als quelle, machen will, gibts probleme.

Warning: error opening D:\\apache\\htdocs\\poco\\shopkeeper\\pix\\artikel \\ahoi.gif in /home/po006vmo/www/home/shopkeeper/create.php on line 103

es kann also das lokale file nicht gelesen werden.

die zeile 103 sieht bei mir so aus:

ftp_put($ftp, $bildname, $bildpfad, FTP_BINARY);

es wird offensichtlich $bildpfad, also der string, der aus dem file-feld stammt, für den upload nicht angenommen.
ich habe mir testhalber die variablen $bildpfad und $bildname ausgeben lassen, auf dem windowssystem werden sie korrekt ausgegeben, funzt ja dort auch alles bestens, nur auf dem linuxserver sehen sie beide gleich aus, nämlich so:

D:\\apache\\htdocs\\poco\\shopkeeper\\pix\\artikel \\ahoi.gif

was darauf hindeutet, daß die pfadangabe als string zwar sehr wohl übernommen wird, aber nicht als pfad akzeptiert wird, sonst würde nämlich basename($bildpfad) korrekt funktionieren und den dateinamen aus dem obigen pfad extrahieren.

an den doppelten "\\" liegts wohl nicht, denn 1. gehts ja unter win und 2. hat ein stripslashes($bildpfad) vor dem ftp-upload auch nix gebracht, dann hab ich dieselbe fehlermeldung nur mit einem "\" jeweils.

vielen dank für jede hilfe, ich bin echt am narrischwerden und das teil muß bald fertig sein. :mad:

Sloter 13.12.2001 07:23

Safemod "off" in der php.ini ?

Sloter

ibisxi 13.12.2001 09:36

dir-seperators
 
Hey Andy...

Linux verwendet / (Slashes) um die dirs von einander zu trennen. Kann es sein, dass das der fehler war/ist? Ansonsten setzen wir uns wohl am besten morgen nachmittag zusammen hin und schaun uns das an...
(und danach gehts zu ursi :-)

grüaßle!
Tobias

RaistlinMajere 13.12.2001 10:13

@sloter
 
ja, ist off. was heißt das, nebenbei bemerkt?

Sloter 13.12.2001 10:18

Safemod (geschützter betrieb) ist eine kleine Sicherheitseinrichtung.
Ist Safemod on, können zB keine Datein auf den Server mit PHP raufgeladen werden.

Beim raufladen von Datein wird das Temp-verzeichnis verwendet.
Hast du Zugriff auf den Linuxserver?


Sloter

RaistlinMajere 13.12.2001 10:55

zugriff habe ich, ich kann über ein ftp-prog oder wenn ich das skript testhalber von meinem windowsserver aus ausführe, auch auf den linuxserver raufladen.

es liegt übrigens nicht daran, daß der linuxserver die pfadangabe nicht als solche erkennt, weil "\" darin vorkommen, ich hab den string so aufbereitet, daß die "\" durch "/" ersetzt werden, jetzt lautet die meldung halt

Warning: error opening D:/apache/htdocs/poco/shopkeeper/pix/artikel/ahoi.gif in /home/po006vmo/www/home/shopkeeper/create.php on line 106

:(

welches temp-verzeichnis, das lokale?

_m3 13.12.2001 11:02

Bin kein PHP-Guru, aber "D:/apache/..." ist IMHO keine gültige Pfadangabe für Linux, da es die Laufwerksbuchstabenmetapher nicht gibt.

Ich verteh aber auch das Problem nicht so ganz.
Du willst einen File-Upload über einen Browser auf einen Webserver relaisieren? Und Du verwendest dafür ein PHP-Script am Server?

RaistlinMajere 13.12.2001 11:13

@_m3
 
genau, es soll über ein auf dem server liegenden script auf diesen server ein lokales file upgeloadet werden. nur das lokale file kann nicht für den upload geöffnet werden und ich frage mich warum. daß es nicht an den pfadunterschieden zwischen windows und linux liegt, ist mir mittlerweile schon klar, aber wo sonst kann da ein fehler sein? v.a. warum wird das lokale file gefunden, wenn ich das script von meinem server aus ausführe und auf den andern server rauflade?

Sloter 13.12.2001 11:51

Vielleicht hilft der Link
http://www.php4-forum.de/beispiele/anwendung_upload.htm

Vielleicht Probleme mit den Dateirechten am Winrechner?

Vielleicht die FTP-Funktion in PHP am Linuxserver nicht compiled?

Vielleicht die Datei zu groß? (wird in der php.ini geregelt

Sloter

RaistlinMajere 13.12.2001 12:20

@sloter
 
thx, aber irgendwie ist das, was im link steht, nicht wirklich eine upload-, sondern lediglich eine copy-beschreibung, warum das unter "upload" gehandelt wird, verstehe ich nicht ganz.

rechteproblem ist es auch keins, hab grad von nem anderen kübel aus übers web betroffene datei geöffnet.

und zu groß ist die datei nicht, denn die standarteinstellung ist ja 2mb und das paßt somit.

ob die funktion gar nicht compiled wird... kann sein, aber ich kann mir das bei inode schwerlich vorstellen.

_m3 13.12.2001 12:46

http://www.php.net/manual/de/features.file-upload.php hast Du Dir schon angesehen?

Sloter 13.12.2001 16:07

Lade eine Datei mit folgendem Inhalt rauf, und rufe sie auf.

<?
phpinfo()
?>

Dann siehst du ob die Funktion compiled ist.
Bei vielen ist die Funktion deaktiviert, da man sie leicht abhören kann und auch dadurch für Fremde leicht zu knacken.

Der Link ist ein kleines Script zum kopieren von Datein auf den Server.
Soetwas ähnliches hat du ja vor.

Sloter

RaistlinMajere 13.12.2001 17:15

@sloter
 
damit beweise ich ja nur, daß generell php-scripts verarbeitet werden können, aber das weiß ich ja schon, daß sie das werden, weil der fileupload nur ein teil eines größeren scripts ist, das ansonsten ja funzt.

Sloter 13.12.2001 17:55

Nein du siehst auch mit welchen Features PHP compiled ist.
Suche nach FTP

Sloter

_m3 13.12.2001 18:59

Irgendwie steh ich komplett daneben. :verwirrt:

Wenn ich über einen Browser und ein HTMl-Formular ein File uploade, wird das File im Repsonse mitübertragen und unter einem temp-Namen am Server abgespeichert. Von dort kann ich es dann irgendwohin kopieren (daher auch das Copy in dem Link vom Sloter).

Wo brauche ich da die FTP-Funktionalität???? :confused:

Sloter 13.12.2001 19:19

@m3

Mit dem normalen Upload gehen einige Sachen nicht.

Mit der Funktion ftp() in PHP kannst du zB Verzeichnise anlegen, chmod usw...
Wie mit einem richtigen FTP-Clienten.


Sloter

RaistlinMajere 13.12.2001 20:48

@_m3: also mit kopieren hab ich das nie gemacht, mittels ftp_put kamma gleich angeben, mit welchem pfad genau das file auf den server platziert werden soll.

@sloter: aha, werd ich dann gleich mal probieren, danke!

RaistlinMajere 13.12.2001 21:30

@sloter
 
ftp ist enabled, hätte mich auch gewundert. dran liegts also auch ned.

Sloter 13.12.2001 23:03

Hm, dann weiß ich auch nicht weiter :(

Probier einmal das Script vom Link aus, dann können wir wenigstens den Fehler eingerenzen.

Sloter

mr. blub 14.12.2001 17:21

@fragensteller
 
warum willst du das denn unbedingt über die ftp funktionen von php machen?

wenn du eh nur ein paar bilder raufladen willst kannst du das ja auch mit der copy funktion machen, ein beispiel das perfekt fuer dich ist findest du hier habe auch schon 2 so script gemacht, eines mit den ftp funktionen und eines ohne ftp.


haben beide funktioniert, schau dir mal das obere script an und versuch es so zu machen, wenn nicht kann ich dir ja mal den source geben der mit den ftp funktionen arbeitet.

-zeke

RaistlinMajere 14.12.2001 23:28

denkfehler bei ftp_put
 
mittlerweile glaube ich zu wissen, wo das problem liegt.

bei ftp_put findet ein upload über ftp von einer quelle auf einen server von einem client ausgehend statt, die parameter sind der quellenpfad und der zielpfad, die funktion wird jedoch am client ausgeführt, da ja nur dort der quellenpfad bekannt ist.

die funktion move_uploaded_file oder eben auch copy bedeutet für das auf dem server ausgeführte (wie in meinem fall) script, daß ein file nicht gesendet, sondern geholt wird (aus der sicht des servers, wo das script ja ausgeführt wird), die übergabeparameter sind wieder ein quellenpfad und ein zielpfad, wobei ersterer diesmal nicht am server gesucht wird, sondern am client. also genau das, was ich brauche.

mein fehler lag nun darin, daß ich die funktionalität von copy mit der von ftp_put verwechselt habe und mich gewundert habe, warum der lokale pfad nicht gefunden wurde, wenn ich das script vom server aus ausgeführt habe, nona, am server gibts diesen pfad ja nicht!
wenn ein script mit ftp_put dort ausgeführt wird, dann nur, weil von dort woanders hin etwas geloadet werden soll, nicht wenn etwas geholt werden soll.
es ist auch d.h. nicht verwunderlich, wenn das script gefunzt hat, wenn ichs testhalber von meinem eigenen server laufen ließ, weil dort ja der lokale pfad existierte, aber trotzdem natürlich die funktion ftp_put für meine anwendung nicht die richtige ist.

bin ziemlich zuversichtlich, daß das mein fehler ist, werds dann mal ausprobieren, wenn ich zeit hab.


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag