[PHP] ftp-connectie

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • GeniusGeri
  • Registratie: Februari 2004
  • Laatst online: 05-01-2024
Hoi,

Ik wil graag een bestandje van mijn harde schijf via een ftp-connectie uploaden. Ik gebruik daarvoor de volgende code:

form.html

<html>
<head>
<title>Form</title>
</head>
<body marginwidth=4 marginheight=4 topmargin=4 leftmargin=4 bgcolor=white vlink="#0000ff" link="#0000ff">

<form name="Attachments" method=POST action="sendimage.php" enctype="multipart/form-data">

<input type=file name=source_file size=20> <br>

<input type=submit name=btnSubmit value=Submit size=20 style="border: 1px solid #0000FF"></form>
</body>
</html>


En sendimage.php ziet er als volgt uit:
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
      
   $ftp_server='**************';
   $conn_id = ftp_connect($ftp_server); 
   
   $user="***********";
   $passwd="************";
   $login_result = ftp_login($conn_id, $user, $passwd); 

   if ((!$conn_id) || (!$login_result)) 
    { 
       echo "FTP connection has failed!";
       echo "Attempted to connect to $ftp_server for user $ftp_user_name"; 
       die; 
    } 
    else 
    {
       echo "<br>Connected to $ftp_server, for user $user<br>";
    }
    
  ftp_chdir($conn_id, "/public_html/www/mp3/images/");

$destination_file="test2.jpg";

echo ("<br>");

//echo "<pre>";
//print_r($_FILES);
//echo "</pre>";

$upload = ftp_put($conn_id, $destination_file, $_FILES['source_file']['tmp_name'], FTP_BINARY); 

// check upload status
if (!$upload) 
    { 
           echo "FTP upload has failed!";
    } 
    else 
    {
           echo "Uploaded $source_file to $ftp_server as $destination_file";
    }

// close the FTP stream 
ftp_close($conn_id); 
?>


Hij maakt op de juiste manier een verbinding met de ftp-server. Alleen krijg ik de volgende foutmelding:

Connected to *********, for user ********

test2.jpg

Warning: ftp_put(): open_basedir restriction in effect. File(/tmp/phpKl2Q8N) is not within the allowed path(s): (/domains/**********/) in /domains/*********/public_html/www/sendimage.php on line 34
FTP upload has failed!


Wat doe ik nu verkeerd? Het zal wel een fout zijn in de pad-verwijzing, maar ik heb al veel combinaties geprobeerd maar ik krijg het maar niet voor elkaar.
Iemand suggesties?

Groeten,
GeniusGeri

[ Voor 24% gewijzigd door GeniusGeri op 06-02-2004 12:14 ]


Acties:
  • 0 Henk 'm!

  • creative8500
  • Registratie: September 2001
  • Laatst online: 01-02 14:14

creative8500

freedom.

Ga eens met $_FILES werken. :)

HTTP File upload variables: $_FILES

Acties:
  • 0 Henk 'm!

  • igmar
  • Registratie: April 2000
  • Laatst online: 03-09 22:58

igmar

ISO20022

GeniusGeri schreef op 05 februari 2004 @ 20:05:
Wat doe ik nu verkeerd? Het zal wel een fout zijn in de pad-verwijzing, maar ik heb al veel combinaties geprobeerd maar ik krijg het maar niet voor elkaar.
Iemand suggesties?
Ja, pak de PHP manual, zoek op wat safe mode is, wat het voor restricties oplegt, en kijk wat je code doet. Kijk ook even na wat een upload in PHP met de bestanden doet, en trek je conclusies :)

[ Voor 10% gewijzigd door igmar op 05-02-2004 21:19 ]


Acties:
  • 0 Henk 'm!

  • GeniusGeri
  • Registratie: Februari 2004
  • Laatst online: 05-01-2024
Bedankt voor de antwoorden. Ik ben wel weer een stuk verder, maar kom er nog niet helemaal uit.

Ik heb nu met behulp van $_FILES het volgende verandert:

PHP:
1
$upload = ftp_put($conn_id, $destination_file, $_FILES['source_file']['tmp_name'], FTP_BINARY);

Dan krijg ik de foutmelding:
Warning: ftp_put(): open_basedir restriction in effect. File(/tmp/php4OQlYU) is not within the allowed path(s): (/domains/********.nl/) in /domains/*********.nl/public_html/www/sendimage.php on line 37

En als ik het volgende doe:
PHP:
1
$upload = ftp_put($conn_id, $destination_file, $_FILES['source_file']['name'], FTP_BINARY);

krijg ik de foutmelding:
Warning: ftp_put(): Unable to access 11.jpg in /domains/*********.nl/public_html/www/sendimage.php on line 37

Als ik de inhoud van $_FILES laat zien, zie ik het volgende:

Array
(
[source_file] => Array
(
[name] => 11.jpg
[type] => image/pjpeg
[tmp_name] => /tmp/phpIDxOyy
[error] => 0
[size] => 16026
)

)

Dit lijkt me goed.

Als ik op de server een bestandje test.jpg zet en ik verander de $_FILES['source_file']['name'] in 'test.jpg', dan werkt het wel goed. Hij kopieert dan dat bestandje onder de naam test2.jpg in een andere map.
Van server naar server gaat het dus goed. Nu nog van mijn harde schijf naar server. :/

De padverwijzing (ftp_chdir) is wel goed.

Kan iemand mij weer verder helpen? De complete code zoals ik nu inmiddels heb, staat in mijn eerste post bovenaan.

Acties:
  • 0 Henk 'm!

  • GeniusGeri
  • Registratie: Februari 2004
  • Laatst online: 05-01-2024
Als Save Mode aan staat op de server, is het dan helemaal onmogelijk?

Acties:
  • 0 Henk 'm!

  • stfn345
  • Registratie: Januari 2000
  • Laatst online: 17:59
Je moet gewoon zorgen dat de destination naar een echt path verwijst op de server waar je het naartoe stuurt, waar jij mag schrijven.. (dus NIET het path zoals jij dat in je ftp ziet.. maar het echte path)

/domains/*********.nl/public_html

bijv.

Acties:
  • 0 Henk 'm!

  • GeniusGeri
  • Registratie: Februari 2004
  • Laatst online: 05-01-2024
Dat had ik dus al gedaan, maar dan krijg ik de foutmelding:

Warning: ftp_put(): open_basedir restriction in effect. File(/tmp/phpLbhac2) is not within the allowed path(s): (/domains/******.nl/) in /domains/*******.nl/public_html/www/sendimage.php on line 39


Ik heb ondertussen het script ook gedraaid op een server waar safe_mode uit staat, en dan werkt het wel goed. Het zal daar dus wel mee te maken hebben zoals igmar noemde.

Mijn vraag is dus nu of het toch mogelijk is als Safe_mode aan staat? Of is het dan sowieso onmogelijk?

Acties:
  • 0 Henk 'm!

  • GeniusGeri
  • Registratie: Februari 2004
  • Laatst online: 05-01-2024
Op http://gathering.tweakers.net/forum/list_messages/632516 staat een vergelijkbaar probleem, alleen staat de uiteindelijke oplossing er niet bij :'(

Op http://gathering.tweakers.net/forum/list_messages/214334 geeft Skef de volgende reactie:
Check voor de grap eens of je wel mag uploaden. Als PHP in zgn. "Safe-Mode" staat, is het weinig uploaden...
Maar ergens anders had ik gelezen dat het in principe wel mogelijk moest zijn. En ook gezien de reactie van RaZoRhEaD lijkt het dus toch te moeten kunnen, ondanks dat safe_mode aan staat.

Ik weet zeker dat ik goede schrijfrechten heb.

Weet iemand dus nog iets wat ik kan proberen?

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

ik denk dat je eerst een move_uploaded_file moet gebruiken aangezien die geen "last" heeft van de safe_mode restricties

Acties:
  • 0 Henk 'm!

Verwijderd

Erkens schreef op 11 februari 2004 @ 10:06:
ik denk dat je eerst een move_uploaded_file moet gebruiken aangezien die geen "last" heeft van de safe_mode restricties
dit denk ik niet alleen dit weet ik zelfs wel zeker.
Je zou ook een check kunnen maken die ongeveer dit doet:
PHP:
1
2
3
4
5
if (move_uploaded_file(from,to)) {
  // goed bij move
} else {
  // fout bij move
}
Pagina: 1