webForumDet fria alternativet

Automatisk hämtning av CSV-fil från annan domän.

PHP

5 svar · 511 visningar · startad av PiteCarina

Medlem sedan sep. 200749 inlägg
Frågan#1

Hej!
Det är så att jag har åtkomst till en CSV-fil via FTP, men som det är nu så måste jag hämta den manuellt via "Startmenyn" -> "Kör" till min lokala dator och sedan föra över den till rätt katalog hos webbhotellet Interact.

Men jag undrar om det är möjligt att CVS-filen hämtas automatiskt (en gång om dagen) och att den då hamnar direkt i katalogen hos webbhotellet?

Min tanke var att man i en PHP-fil kunde anropa ftp_connect(), men jag får det inte att fungera. Vet inte om jag har fel i koden, eller om det inte är tekniskt möjligt, p.g.a. inställningar hos "filhämtningsstället" och/eller webbhotellet?

Webbhotellet använder PHP Version 4.4.2 och har FTP_PASSIVE_MODE = YES.

De uppgifter jag har för att manuellt hämta CSV-filen är:

(STARTMENYN) (KÖR) ftp https://www.foretagsnamn.no

Login: loginnamn

Password: pwnamn

För att hämta filen ge följande kommandon:

CD katalognamn

LCD c:\download (eller motsv lokal katalog där den hämtade filen skall hamna)

GET filnamn.csv

Hittade detta exempel: http://www.scriptygoddess.com/archives/2003/11/21/using-php-to-ftp-and-import-a-csv-file-into-a-database/

som jag försökte anpassa till ovanstående uppgifter, men misslyckades. Det händer ingenting, blir inte ens ett felmeddelande:

<?php
//FTP Hostname
$ftp_server = "www.foretagsnamn.no";
$ftp_username = "loginnamn";
$ftp_userpassword = "pwnamn";

//This is the name and location of the file you want downloaded to your local server
$local_file = "/usr/home/public_html/minkatalog/filnamn.csv";

//This is the name and location on your FTP server
//note that the starting directory is what would be available when you logged in via an FTP program. This was one thing that caused me a bit of confusion - because I had originally been placing the full server path here - but thats not what I see when I FTP in... notice the difference between this path and the local path above.

$server_file = "/katalognamn/filnamn.csv";

//connect to the server
$conn_id = ftp_connect($ftp_server) or die ("I couldn't connect to the ftp server");

if(!$conn_id){
	echo "uppkopplingen misslyckades";
}else{
	echo "Det lyckades?";
}

//login to the server
$login_result = ftp_login($conn_id, $ftp_username, $ftp_userpassword);
//get the file!
if (ftp_get($conn_id, $local_file, $server_file, FTP_ASCII)) {
//ftp_get can get files in ascii or binary,
//binary would have FTP_BINARY instead of FTP_ASCII
echo "got it!!";
} else {
echo "nope";
}

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

Det stod även detta i instruktionerna för hämtning av fil:

"Önskar man göra detta med automatik kan man använda script, enligt exempel:

ftp https://www.foretagsnamn.no -s:scriptfil.hej"

men det är väl bara en förenkling för att ladda hem filen lokalt?

Vore mycket glad om ni kunde ge mig en förklaring till varför det inte fungerar.
Finns det någon annan lösning för att få det att fungera automatisk, hela vägen?

Mycket tacksam för hjälp!
PiteCarina

Medlem sedan sep. 200749 inlägg
#2

Jag har fått tips om att ändra till $server_file = "katalognamn/filnamn.csv", d.v.s. att ta bort '/' före katalognamn.
Även att använda ftp_pasv för att slå på passiv, men har dock inte hunnit testa det.

Medlem sedan sep. 200749 inlägg
#3

Såg i några kodexempel att ftp_pasv() anropades efter ftp_connect() och ftp_login(), men det blir problem redan vid ftp_connect().

Testade därför att lägga till:

error_reporting(E_ALL); 
ini_set("display_errors","on");

överst i min kod och fick då följande felmeddelande:

Fatal error: Call to undefined function: ftp_connect()

Ändrade även till:

$ftp_server = "foretagsnamn.no";

men fick samma felmeddelande.

Varför är ftp_connect() en odefinierad funktion?
Är argumentet i parentesen fel?
Eller är det något inställning hos webbhotellet?

Webbhotellet använder, som jag skrev inledningsvis, PHP Version 4.4.2 och har FTP_PASSIVE_MODE = YES.

Medlem sedan juni 20001 251 inlägg
#4

Det låter som ftp inte är aktiverat. Du kan testa att ladda upp en phpinfo()-sida och se om du har hittar strängen "--enable-ftp".

http://www.webforum.nu/showthread.php?p=1132011

Medlem sedan sep. 200749 inlägg
#5

Tack stevenet!
Jag har nu laddat upp phpinfo()-sidan och det finns ingen "--enable-ftp"-sträng i "Configure Command". :(

Så jag får nog leta efter ett andra sätt att lösa problemet, utan ftp_connect().
Jag hoppas verkligen att detta går att genomföra!
Tar mycket gärna emot tips!

Medlem sedan sep. 200749 inlägg
#6

Jag fick tips om att använda file_get_contents() i stället och nu fungerar det! :D

256 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
117 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)