Hej!
Jag söker billiga webbhotell som stöder FTP anslutning via PHP. D.v.s. att man ska kunna göra en FTP anslutning till en annan server för att kunna hämta hem en fil. Vet nån av er något webbhotell som kan klara av detta? Tacksam för svar!
MVH Niclas Hjulström
nicclasMedlem sedan feb. 20001 050 inlägg Funktioner för FTP som ftp_connect är med som standard i alla unix-liknande versioner av PHP, dvs alla webbhotell som kör på tex Linux har denna möjlighet. På servrar som inte har FTP-funktionerna aktiverade kan du (nog) använda fsockopen istället.
Hur det är med stöd för "passive-FTP" vet jag dock inte.
[Redigerat av nicclas den 12 aug 2001]
Hej igen!
Vad jag har förstått så kan man inte öppna en ftp anslutning via fsockopen. Vad jag ska göra är att hämta en fil från en server och spara en kopia på mitt webbhotell. Vissa servrar kräver att man använder en ftpanslutning för att hämta filen. Finns det någon annan lösning för att göra detta?
Vad menas med passive ftp?
MVH Niclas Hjulström
nicclasMedlem sedan feb. 20001 050 inlägg Vad jag har förstått så kan man inte öppna en ftp anslutning via fsockopen.
Varför kan man inte det? FTP anslutningar fungerar på samma sätt som HTTP, bara ett annat protokoll. Läs på "fsockopen"-länken jag gav, där finns exempel på hur man gör ett FTP-anrop mha fsockopen. "passive-FTP" är en variant där servern du ansluter till endast har en port öppen, vilket brukar vara att fördra då man har en brandvägg installerad.
Om du nu skall hyra webbhotell och tänker köra PHP skall du hyra hos en leverantör som kör Linux (eller Unix).
/nicclas - www.nyhetsrubriker.com
OK!
Det går att använda ftp adresser.
Men jag får ett felmeddelande (0) av denna koden:
<?php
$fp = fsockopen("ftpx.download.com/pub/win95/games/arcade/lwn100_cnet_demo.exe",21,$errno,$errstr,60);
if(!$fp){
echo "$errstr ($errno)";
}else{
echo "Det funkade";
}
?>
Vet nån vad det är för fel på koden eller är det webbhotellet det är fel på? Jag skulle bara använda denna kod för att testa om det skulle funka att göra en connection med fsockopen.
MVH Niclas Hjulström
nicclasMedlem sedan feb. 20001 050 inlägg Jo, det är klart att det där inte funkar ;)
Så här skall det vara:
<?php
$fp = fsockopen("ftpx.download.com",21,$errno,$errstr,60);
if(!$fp){
echo "$errstr ($errno)";
}else{
echo "Det funkade";
}
?>
Men denna kod öppnar bara en socket, sen skickar du (med fputs typ) ett HTTP-GET anrop på filen som du vill ha. Funkar fint :)
/nicclas - www.nyhetsrubriker.com
OK!
Men hur gör jag så att fgets() öppnar filen? fgets() tar väl bara fp och filesize som argument? Ska man ändra fp på något sätt t.ex.
// $fp = något domän namn
$fp2 = $fp + "/katalog/fil.txt";
Tacksam för svar
/Niclas
nicclasMedlem sedan feb. 20001 050 inlägg Nej, $fp är en "fil-pekare", ett handtag för filen och innehåller inget för dig uttydbart, tex INTE filnamn.
Gör ett HTTP-GET anrop som du skickar med fputs. Brukar kunna se ut som:
fputs($fp,"GET /pub/win95/games/arcade/lwn100_cnet_demo.exe HTTP/1.0\r\n\r\n");
Sen kommer filen till dig! Läs data som kommer med fread, typ
$fil=fread($fp,9999999);
Nu innehåller $fil hela .exe-filen :)
/nicclas - www.nyhetsrubriker.com
[Redigerat av nicclas den 18 aug 2001]