Php fájlfeltöltés hálózaton
2007-09-06T11:32:57+02:00
2007-09-10T14:13:49+02:00
2022-07-28T02:06:40+02:00
fgi
Sziasztok!

Fájlt töltenék fel másik szerverre, de nem megy...

A web-szerveren fut a php-script. A fájlfeltöltés helyi mappába működik, teljes elérési úttal is (pl c:\...\upload\).
Próbáltam hálózati meghajtóként felcsatolni a célmappát (pl z:\...\upload), de nem megy fel a fájl, pedig "full access" joggal rendelkezik.
Próbáltam megosztott mappaként is beleírni, de úgy se ment...
Ezzel töltöm fel:

copy($_FILES['userfile']['tmp_name'], "Z:\\upload\\".$_FILES['userfile']['name'])

Gondolkoztam ftp-n is, de a másik szerverre nem megoldható ftp-szerver program telepítése...
Mutasd a teljes hozzászólást!
Milyen jogosultságokkal rendelkezel a célgépen?
Az a gond, hogy a futó php script nem a te jogosultságaiddal rendelkezik, hanem az őt futtató webszerverben beállított felhasználói fiók jogosultságaival.
Pl.: IIS-nél a php script mindíg az Internet vendég fiók (IIS_gépnév) jogosultságaival fut.
Ez azt jelenti, hogy amikor kapcsolódni akar a másik géphez, hogy fájlt helyezzen el rajta, akkor ezzel a felhasználóval teszi ezt.
hogy mit lehet ilyenkor tenni? Vagy rögzítesz a másik gépen egy ilyen nevű felhasználót, vagy a megadott mappát mindeki által elérhetővé teszed.

P.S.: Az itt leírtak csak általánosan igazak, sok függ(het) attól, hogy milyen webszerver, milyen oprendszer van a webszerver gépen, milyen oprendszer van a célgépen.
Mutasd a teljes hozzászólást!

  • copy helyett move_uploaded_file
    Mutasd a teljes hozzászólást!
  • Milyen jogosultságokkal rendelkezel a célgépen?
    Az a gond, hogy a futó php script nem a te jogosultságaiddal rendelkezik, hanem az őt futtató webszerverben beállított felhasználói fiók jogosultságaival.
    Pl.: IIS-nél a php script mindíg az Internet vendég fiók (IIS_gépnév) jogosultságaival fut.
    Ez azt jelenti, hogy amikor kapcsolódni akar a másik géphez, hogy fájlt helyezzen el rajta, akkor ezzel a felhasználóval teszi ezt.
    hogy mit lehet ilyenkor tenni? Vagy rögzítesz a másik gépen egy ilyen nevű felhasználót, vagy a megadott mappát mindeki által elérhetővé teszed.

    P.S.: Az itt leírtak csak általánosan igazak, sok függ(het) attól, hogy milyen webszerver, milyen oprendszer van a webszerver gépen, milyen oprendszer van a célgépen.
    Mutasd a teljes hozzászólást!
  • tökéletesen tisztában vagyok a leírtakkal, és minden így is van...
    ezt kellene megkerülni, tehát: úgy futtatni a copy() (vagy valamilyen hasonló) függvényt, hogy jogosultságot adhassak neki...
    mert: a
    rögzítesz a másik gépen egy ilyen nevű felhasználót
    nem megoldható, valamint
    a megadott mappát mindeki által elérhetővé teszed
    pedig már megtörtént, de úgy se megy...
    Mutasd a teljes hozzászólást!
  • Nekem ugyanez volt a problémám egy szolgáltatónál, hogy külön vette a webes filekezelést és az ftp-n valót. Más felhasználónévről futott. Én igy oldottam meg:

    $conn_id = ftp_connect($ftp_server); $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); $dirbeft = $path.$dirname; if (ftp_mkdir($conn_id, $dirbeft)) { echo "Sikeresen létrehozva"; } else { echo "Sikertelen"; } ftp_site($conn_id, 'CHMOD 0777 ' . $dirbeft); ftp_close($conn_id);

    Ezután tudsz az ez által létrehozott mappában filet feltölteni.
    Mutasd a teljes hozzászólást!
  • már írtam, hogy ftp szolgáltatás nem megoldható...
    Mutasd a teljes hozzászólást!
  • Z meghíjtód valszeg a másik gépnek egy C vagy D meghajtója és a megosztásnál csak olvasási jog van megadva, állíts be mindenféle módosítási jogot is
    Mutasd a teljes hozzászólást!
  • nem, a felcsatolt meghajtó a másik szerver egy mappája
    és mindenféle jog meg van adva...
    Mutasd a teljes hozzászólást!
  • akkor próbáld meg úgy, hogy csinálsz egy aliast arra a meghajtóra
    van egy ilyen minta benne Alias /icons "C:\appserv\icons"

    vagy vmi ilyen és ez alapján Alias /zmeghajto "Z:/feltoltes/"
    fontos, hogy ne egyből Z:/ meghajtó legyen, mert ott vmi hiba lesz úgy emlékszem és akkor copy($temp,"/zmeghajto/feltoltes/ujnev.mp3")
    Mutasd a teljes hozzászólást!
  • Az a gond, hogy a futó php script nem a te jogosultságaiddal rendelkezik, hanem az őt futtató webszerverben beállított felhasználói fiók jogosultságaival.


    valóban, ha valakinek a jövőben ilyen gondja lesz, ezzel próbálkozzon...

    nekem sajnos nem sikerült átállítani, mivel elég sok alkalmazás beállítását kellett volna még átírni. különböző módszerekkel is próbálkoztam, de semmi...
    a legegyszerűbb megoldás egy alkalmazás megírása volt (ami percenként átmásolja az esetleges fájlokat a másik szervere), ami megfelelő írási jogokkal rendelkezik.
    Mutasd a teljes hozzászólást!
abcd