2013-10-09 3 views
0

Мне нужно сделать PHP-функцию для перемещения файла между двумя серверами ... Например, у меня есть Sever1 и Server2, у меня есть файл1.php на сервере Server1, мне нужно для выполнения функции PHP, такой как: server1/execute.php, для перемещения file1.php в конкретный каталог на Server2.Как переместить файл между серверами с помощью PHP

Я использую:

<?php 
$filename="file1.php"; 
unlink("ftp://USER:[email protected]/httpdocs/DESTINATIONFOLDER/".$filename); 
if(!copy($filename, "ftp://USER:[email protected]/httpdocs/DESTINATIONFOLDER/".$filename)) 
{echo "error";} 

?>  

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

Некоторые идеи?

+3

«Файл скопирован незавершенным» ... как в усеченном? или просто пусто? – PlantTheIdea

ответ

0

Если файл слишком большой и не может быть скопирован за время, выделенное сценарию, копия будет прервана.

Используйте set_time_limit(0);, чтобы удалить ограничение по времени. Имейте в виду, что вы не можете сделать это на всех конфигурациях серверов.

Еще одна мера, которую нужно предпринять, проверяет размер файла в конце передачи, например, вы можете обрабатывать случай, когда возникает ошибка, и загрузка является частичной.

+1

Или также сравнить 'md5_file()' hash – message

+0

@message Как вы можете сделать file_md5 через ftp? Это возможно ? –

+0

Несомненно. 'md5_file ('ftp: // user: [email protected]/path/to/file.txt')' – message

0

Я думаю, что u должен включить allow_url_fopen в php.ini и установить разрешение 755 в исходный файл. и u должен иметь доступ к папке назначения.

или использовать некоторые вещи, как, что: http://stephenmcintyre.net/blog/copy-images-allow_url_fopen-off

+0

allow_url_fopen - потенциальное отверстие безопасности – message

0

Ну вы можете передать файл с помощью FTP. Используйте этот простой и простой код для этого.

/** 
* Transfer (Export) Files Server to Server using PHP FTP 
*/ 

/* Remote File Name and Path */ 
$remote_file = 'files.zip'; 

/* FTP Account (Remote Server) */ 
$ftp_host = 'your-ftp-host.com'; /* host */ 
$ftp_user_name = '[email protected]'; /* username */ 
$ftp_user_pass = 'ftppassword'; /* password */ 


/* File and path to send to remote FTP server */ 
$local_file = 'files.zip'; 

/* Connect using basic FTP */ 
$connect_it = ftp_connect($ftp_host); 

/* Login to FTP */ 
$login_result = ftp_login($connect_it, $ftp_user_name, $ftp_user_pass); 

/* Send $local_file to FTP */ 
if (ftp_put($connect_it, $remote_file, $local_file, FTP_BINARY)) { 
echo "WOOT! Successfully transfer $local_file\n"; 
} 
else { 
echo "Doh! There was a problem\n"; 
} 

/* Close the connection */ 
ftp_close($connect_it); 
Смежные вопросы