Загрузить текстовый файл в Google через PHP FTP PUT

Я пытаюсь загрузить текстовый файл, созданный из базы данных через PHP.

Текстовый файл создается нормально, но когда я пытаюсь загрузить файл через PHP и FTP поставить, он терпит неудачу.

Мой код:

$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);

Сообщение об ошибке, которое я получаю,

Предупреждение: ftp_put(): IP-адрес ПОРТА не совпадает с 176.32.230.48. в /home/sites/mysite.co.uk/public_html/admin/controllers/generate_feed.php в строке 100 ОШИБКА: не удалось загрузить products_admin.txt на uploads.google.com.


person Pete Naylor    schedule 08.08.2016    source источник


Ответы (2)


Вероятно, вам просто нужно активировать пассивный режим:

...
$login_result = ftp_login($ftp_connect, "{usernamehere}", "{passwordhere}") or die("ERROR: Username or Password incorrect.");
ftp_pasv($ftp_connect, true);
...
person Oli    schedule 10.08.2016
comment
Одно примечание из раздела комментариев в документах: Если у вас по-прежнему возникают проблемы после выбора ftp_pasv(), вам следует обновить соединение с помощью ftp_close() / ftp_connect() после передачи x файлов и/или y ГБ. - person CarlosCarucce; 16.08.2016

Когда я использовал FTP с моим сервером Google Compute Engine, у меня возникла та же проблема, которая возникла из-за того, что сервер находится за брандмауэром Google. Подробнее об этой проблеме можно прочитать здесь. Вы можете попробовать включить пассивный режим, который не заботится об IP, с помощью функции ftp_pasv.

person Jehy    schedule 16.08.2016