如何使用PHP在服务器之间移动文件

时间:2013-10-09 15:59:52

标签: php ftp copy

我需要创建一个PHP函数来在两个服务器之间移动文件...例如,我有Sever1和Server2,我在Server1上有一个file1.php,我需要执行一个PHP函数,如:server1 / execute.php将file1.php移动到Server2上的特定目录。

我正在使用:

<?php
$filename="file1.php";
unlink("ftp://USER:PASSWORD@IPADDRESS/httpdocs/DESTINATIONFOLDER/".$filename);
if(!copy($filename, "ftp://USER:PASSWORD@IPADDRESS/httpdocs/DESTINATIONFOLDER/".$filename))  
{echo "error";}

?>    

该代码在我的本地服务器上运行,但是当我在服务器上发布时,该文件被复制不完整。

有些想法?

3 个答案:

答案 0 :(得分:0)

如果文件太大而无法在分配给脚本的时间内复制,则副本将被中断。

使用set_time_limit(0);删除时间限制。请注意,您无法在所有服务器配置上执行此操作。

要采取的另一个措施是在传输结束时检查文件大小,这样就可以处理发生错误并且上传只是部分的情况。

答案 1 :(得分:0)

我认为你必须打开php.ini中的allow_url_fopen并将755 permision设置为源文件。你必须有权访问目标文件夹。

或使用类似的东西:http://stephenmcintyre.net/blog/copy-images-allow_url_fopen-off

答案 2 :(得分: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 = 'ftp-username@your-ftp-host.com'; /* 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 );