[PHP] ftp_put

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Ik heb een probleem op mijn nieuwe host. De functie ftp_put($connect_id, $destination_file, $local_file, FTP_ASCII) werkte op mijn oude host wel, maar nieuwe host niet. Als ik de functie echo, worden alle variabelen ingevuld, behalve $local_file. Ik ben er inmiddels achter gekomen dat op mijn nieuwe host een nieuwe versie van php is geinstalleerd. Kan dit het probleem zijn of is er iets anders aan de hand?

Alvast bedankt!

Groeten,

Matthias

Acties:
  • 0 Henk 'm!

  • Obliterator
  • Registratie: November 2000
  • Laatst online: 19-09 14:48
Misschien handig als je even de code geeft waarmee die variabele gevuld wordt.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Zie hieronder.
PHP:
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
<?php
if (!$_POST['sendbutton'])
{
?>
    <form enctype="multipart/form-data" method="post" action="index.php"> 
    Source: <input type="file" size="40" name="local_file">
    Remote: <input type="file" size="40" name="remote_file">
    <input type="submit" name="sendbutton" value="upload">
    </form>
<?php
}
else
{
    // UPLOAD FILE
    $destionation_file = "/httpdocs/".$_POST['remote_file'];
    if (ftp_put($connect_id, $destination_file, "$local_file", FTP_ASCII))
    {
    echo "Het bestand is succesvol geupload.";
    }
    else
    {
    echo "Het bestand is niet geupload.";
    }
    ftp_close($connect_id);
?>

[ Voor 23% gewijzigd door Verwijderd op 19-12-2005 21:55 ]


Acties:
  • 0 Henk 'm!

  • Speedener
  • Registratie: September 2000
  • Laatst online: 18-09 12:54
[edit]

Wat hier stond is onzin, je load geen file up.

* Speedener slapt zichzelf en gaat slapen :X :O

[ Voor 112% gewijzigd door Speedener op 19-12-2005 21:44 ]

LG Therma V Split WP: HU143MA.U33-HN1636M NK5


Acties:
  • 0 Henk 'm!

  • Peter
  • Registratie: Januari 2005
  • Laatst online: 13-09 17:10
PHP:
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php
if (!$_POST['sendbutton'])
// Hier kan je beter;
// if( $_SERVER['REQUEST_METHOD'] == 'POST' ){
// gebruiken, gezien dat sowiezo werkt.
{
?>
<form enctype="multipart/form-data" method="post" action="index.php"> 
Source: <input type="file" size="40" name="local_file">
Remote: <input type="file" size="40" name="remote_file">
<input type="submit" name="sendbutton" value="upload">
</form>
<?php
}
else
{
// UPLOAD FILE
$destionation_file = "/httpdocs/".$_POST['remote_file'];

// Geuploade bestanden via <input type="file"> moet je niet meer via
// de $_POST global opvragen, maar via een array $_FILES;
// $_FILES['local_file'] = array(
//      'name' => 'bestandsnaam',
//      'tmp_name' => 'bestand in de tmp directory',
//      'size' => 'bestandsgrootte in bytes',
//      'type' => 'bestandstype als mime-type',
//      'error' => 'probleem met het geuploade bestand',
//      );
// Deze array hoef jij niet te vullen, dit doet PHP zelf voor je. In jouw
// geval heb je $_FILES['local_file']['tmp_name']; nodig. Voor de
// remote_file variable die je gebruikt -- ik denk dat je hiervoor een
// <input type="text"> veld wilt gebruiken.

if (ftp_put($connect_id, $destination_file, $_FILES['local_file']['tmp_name'], FTP_ASCII))
// hou je variablen buiten quotes, en zoals eerder gezegt, zet hier
// de $_FILES global voor je local_file neer.
{
echo "Het bestand is succesvol geupload.";
}
else
{
echo "Het bestand is niet geupload.";
}
ftp_close($connect_id);
?>


Zoiets zou best moeten werken, lees het goed door, ik heb niet alles veranderd.

@ Speedener

Zijn formulier geeft echter anders aan.

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Wil je even [php] / [/php] tags om de code zetten? Verder hoef je geen quotes om variablen te plaatsen. Je probleem is verder register_globals. Daarover vind je info in de FAQ.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dat zal best kloppen. Ik 'put' een file van mijn pc naar een server met 'ftp', vandaar de functie ftp_put. Het gaat echter om het principe: de functie is naar mijn idee correct gebruikt en werkt niet.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt, djluc. Ik ga eens kijken. En zal de volgende keer gebruik maken van [ php ] en [ /php ]. Ik was niet zeker of het gebruik daarvan. Excuses.

Nogmaals bedankt,

Matt

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ok, bedankt. Ik heb nu de code aangepast, maar blijf - volgens mij - met hetzelfde probleem zitten als in het begin.

Ik gebruik nu deze code:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php 
    if( $_SERVER['REQUEST_METHOD'] == 'POST'){ 
?> 
        <form enctype="multipart/form-data" method="post" action="index.php">
        Source: <input type="file" size="40" name="local_file"> 
        Remote: <input type="text" size="40" name="remote_file"> 
        <input type="submit" name="sendbutton" value="upload"> 
        </form> 
<?php 
    } 
    else{ 
        $destionation_file = "/httpdocs/".$_POST['remote_file'];        
        if (ftp_put($conn_id, $destination_file, $_FILES['local_file']['tmp_name'], FTP_ASCII)){ 
            echo "Het bestand is succesvol geupload."; 
        } 
        else { 
        echo "Het bestand is niet geupload.<br>"; 
        echo "file:".$_FILES['local_file']['tmp_name'];
        } 
        ftp_close($conn_id);
    }
?>

Acties:
  • 0 Henk 'm!

  • Speedener
  • Registratie: September 2000
  • Laatst online: 18-09 12:54
vergelijk $destionation_file (regel 12) eens met $destination_file (regel 13) ;)

LG Therma V Split WP: HU143MA.U33-HN1636M NK5


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Oh, typefout! Dankje. Is er nu uit, maar helaas, nog steeds hetzelfde probleem.

De code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php  
    if( $_SERVER['REQUEST_METHOD'] == 'POST'){  
?>  
        <form enctype="multipart/form-data" method="post" action="index.php"> 
        Source: <input type="file" size="40" name="local_file">  
        Remote: <input type="text" size="40" name="remote_file">  
        <input type="submit" name="sendbutton" value="upload">  
        </form>  
<?php  
    }  
    else{  
        $destination_file = "/httpdocs/".$_POST['remote_file'];         
        if (ftp_put($conn_id, $destination_file, $_FILES['local_file']['tmp_name'], FTP_ASCII)){  
            echo "Het bestand is succesvol geupload.";  
        }  
        else {  
        echo "Het bestand is niet geupload.<br>";  
        echo "file:".$_FILES['local_file']['tmp_name']; 
        }  
        ftp_close($conn_id); 
    } 
?>


Het probleem:
Warning: ftp_put(): Unable to access in /home/httpd/vhosts/testdomain.nl/httpdocs/test.inc.php on line 13.

Acties:
  • 0 Henk 'm!

  • Guldan
  • Registratie: Juli 2002
  • Laatst online: 11:30

Guldan

Thee-Nerd

Volgens mij geeft dat een rechtenprobleem aan met de user waarmee je een ftp connectie maakt. Onder linux standaard apache denk ik. Staan de rechten op de mappen wel goed?

You know, I used to think it was awful that life was so unfair. Then I thought, wouldn't it be much worse if life were fair, and all the terrible things that happen to us come because we actually deserve them?


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Volgens mij moet het gewoon met 755 kunnen. Voor de zekerheid heb ik het ff gecheckt, maar zelfs met 777 werkt het script niet, zelfde fout, maar bedankt. Iemand nog een idee?

Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 20-09 22:44

MBV

Misschien handig om het eens van de andere kant te bekijken: wat is je FTP-log? (als je daarbij kan)
Gaat het niet al fout bij je ftp_connect of ftp_login commando's? Heb je die return-waarde gecheckt?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het inloggen op de ftp-server werkt correct. Ik weet dit omdat ik wel andere ftp-commando's kan uitvoeren, zoals het aanmaken, naam wijzigen en verwijderen van mappen op ftp-server.

Op regel 18 werkt:
PHP:
1
 echo "file:".$_FILES['local_file']['tmp_name'];
niet. Ik denk dat hier het probleem zit, maar ik kan het niet begrijpen/oplossen. Iemand nog een idee? Alle hulp is gewenst:).

Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 20-09 22:44

MBV

Daarop moet je maar eens zoeken, ik meen me te herinneren dat hier nogal wat vragen over zijn gesteld omdat het niet echt intuïtief werkt. Zelf gelukkig nog niet mee te maken gehad :)

Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Verwijderd schreef op dinsdag 20 december 2005 @ 10:53:
Het inloggen op de ftp-server werkt correct. Ik weet dit omdat ik wel andere ftp-commando's kan uitvoeren, zoals het aanmaken, naam wijzigen en verwijderen van mappen op ftp-server.

Op regel 18 werkt:
PHP:
1
 echo "file:".$_FILES['local_file']['tmp_name'];
niet. Ik denk dat hier het probleem zit, maar ik kan het niet begrijpen/oplossen. Iemand nog een idee? Alle hulp is gewenst:).
het moet
PHP:
1
$_FILES['userfile']['tmp_name']
zijn ;)

En als lijn 18 niet werkt, dan zal 13 het ook niet doen, verander dus 13 en 18

[ Voor 20% gewijzigd door Snake op 20-12-2005 22:02 . Reden: std -> php ]

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • PhoeniX-
  • Registratie: Juni 2000
  • Laatst online: 01-09 10:26
snake903 schreef op dinsdag 20 december 2005 @ 22:00:
het moet
PHP:
1
$_FILES['userfile']['tmp_name']
zijn ;)
Waarom moet het userfile zijn? Zijn input ziet er toch zo uit:
HTML:
1
<input type="file" size="40" name="local_file">
?

Het lijkt me dat hier gewoon local_file gebruikt moet kunnen worden.

[ Voor 10% gewijzigd door PhoeniX- op 21-12-2005 16:52 . Reden: typo ]


Acties:
  • 0 Henk 'm!

  • Massiefje
  • Registratie: Mei 2002
  • Laatst online: 14:12
PhoeniX- schreef op woensdag 21 december 2005 @ 10:42:
[...]

Waarom meot het userfile zijn? Zijn input ziet er toch zo uit:
HTML:
1
<input type="file" size="40" name="local_file">
?

Het lijkt me dat hier gewoon local_file gebruikt moet kunnen worden.
en om het zeker te weten kan je een
PHP:
1
2
3
echo '<pre>';
print_r($_FILES);
echo '</pre>';


uitvoeren :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Heren! Bedankt! Na extreem veel gepuzzel, met jullie hulp, ben ik eruit gekomen!

Hieronder het juiste script. Als je 't zo ziet stelt het weinig voor, maar 't heeft me toch de nodige uurtjes gekost!

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?
    if($_SERVER['REQUEST_METHOD'] != 'POST')
    {
?>

        <form enctype="multipart/form-data" method="post" action="<?php echo $HTTP_SERVER_VARS['PHP_SELF']; ?>"> 
        <input type="file" size="40" name="local_file">
        <input type="submit" name="sendbutton" value="submit">
        </form>
<?
}
else
{
        $destination_file = "/httpdocs/".$_FILES['local_file']['name'];
        if (ftp_put($conn_id, $destination_file, $_FILES['local_file']['tmp_name'], FTP_BINARY))
        {
            echo "Het bestand is succesvol geupload.";
        }
        else
        {
            echo "Het bestand is niet geupload.";
        }
        ftp_close($conn_id);
?>


Nogmaals bedankt,

Matt

[ Voor 42% gewijzigd door Verwijderd op 21-12-2005 20:41 ]


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 20-09 22:44

MBV

ik zie 1 typo: regel 18 heeft <? zonder een ?> ervoor, lijkt me niet de bedoeling :). Wat was nou eigenlijk het probleem met je script? Diff-vaardigheden over boven- en onderkant van een topic ben ik erg slecht in :P

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Geen idee wat 't uiteindelijk was. Ik ben uit wanhoop zonder nadenken vanalles gaan proberen, ook met de bovenstaande tips. Toen ik uiteindelijk FTP_ASCII in FTP_BINARY veranderde, werkte het script. Maar daar zijn nog veel andere stappen aan vooraf gegaan.

Ach, het werkt, ik ben heel tevreden. Ik buig me al weer over een volgend probeem: hoe kan er in hemelsnaam een parse error staan in een regel zonder php (in de buurt!). Achja, als alles in 1 keer zou lukken, zou 't ook geen kunst zijn, he.

Groeten en bedankt,

Matt

Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 20-09 22:44

MBV

parse error: is het niet in 1 van de includes? Soms geeft hij dat verkeerd aan, heb ik gemerkt

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
De pagina met de error bevat geen includes, maar wordt zelf wel geinclude. Als ik de pagina zelf aanroep (dus zodat de pagina niet geinclude wordt), wordt dezelfde fout gegeven.

Parse error: parse error, expecting `']'' in /httpdocs/modmb.inc.php on line 606.

line 606:
<td width="40"><center>[img]"img/pic-arrow.gif"></center></td[/img]

Raar, toch?

(Oeps, niet helemaal on topic..)

[ Voor 39% gewijzigd door Verwijderd op 21-12-2005 21:12 ]


Verwijderd

Controleer ook lijn 605 en verder naar boven of je daar niet wat mist, met die regel kunnen wij natuurlijk ook niets :)
Pagina: 1