2016-08-08 11 views
8

Ich versuche eine Textdatei hochzuladen, die aus einer Datenbank über PHP erstellt wurde.Hochladen der Textdatei zu Google-Uploads über PHP FTP PUT

Die Textdatei ist OK erstellt, aber wenn ich versuche, die Datei per PHP FTP hochladen, setzen Sie es fehlgeschlagen.

Mein Code:

$filename = "products_admin.txt"; 
$handle = fopen($filename, 'w+'); 
fwrite($handle, $content); 
fclose($handle); 
echo "Attempting to connect to <i>uploads.google.com</i>...<br />"; 
$ftp_connect = ftp_connect("uploads.google.com", "21", "5000") or die("failed to connect."); 
$login_result = ftp_login($ftp_connect, "{usernamehere}", "{passwordhere}") or die("ERROR: Username or Password incorrect."); 

if((!$ftp_connect) || (!$login_result)) { 
    echo "ERROR: Couldn't connect to <i>uploads.google.com</i>, upload failed.<br /><br />"; 
    echo "<a href=\"javascript:location.reload(true)\">Try Again</a>"; 
    exit; 
} else { 
    echo "Connected to <i>uploads.google.com</i>...<br />"; 
    $upload = ftp_put($ftp_connect, $filename, $filename, FTP_ASCII); 
    if(!$upload) { 
     echo "ERROR: Failed to upload ".$filename." to <i>uploads.google.com</i>.<br /><br />"; 
     echo "<a href=\"javascript:location.reload(true)\">Try Again</a>"; 
    } else { 
     echo "Uploading <i>".$filename."</i> to <i>Froogle</i>...<br />"; 
     echo "Successfully uploaded <i>".$filename."</i> to <i>uploads.google.com</i>.<br /><br />"; 
     echo "Done."; 
    } 
} 
ftp_close($ftp_connect); 

Die Fehlermeldung, die ich bekommen ist

Warnung: ftp_put(): PORT IP nicht gleich wie 176.32.230.48 ist. in /home/sites/mysite.co.uk/public_html/admin/controllers/generate_feed.php in Zeile 100 FEHLER: Upload von products_admin.txt zu uploads.google.com fehlgeschlagen.

Antwort

4

Sie wahrscheinlich brauchen nur passiv-Modus zu aktivieren:

... 
$login_result = ftp_login($ftp_connect, "{usernamehere}", "{passwordhere}") or die("ERROR: Username or Password incorrect."); 
ftp_pasv($ftp_connect, true); 
... 
+1

Eine Anmerkung aus dem Kommentarbereich in der [docs] (http://php.net/manual/en/function.ftp-pasv.php): _Wenn Sie nach der Auswahl von ftp_pasv() immer noch Probleme haben, sollten Sie aktualisieren die Verbindung über ftp_close()/ftp_connect() nachdem x Dateien und/oder GB übertragen wurden ._ – CarlosCarucce

0

Als ich FTP mit meinem Google Compute Engine-Server, ich hatte das gleiche Problem, das aufgetreten ist, da der Server hinter Googles Firewall befindet. Sie können mehr über dieses Problem lesen here. Sie können versuchen, den passiven Modus zu aktivieren, der IP mit der Funktion ftp_pasv nicht interessiert.