PHP ftp_put创建文件但不移动

时间:2017-02-20 17:40:58

标签: php

我试图通过FTP连接从一台服务器向另一台服务器发送文件。我能够创建连接并将文件发送到我想要的文件夹。

文件已创建,但它有0字节。此外,php函数在一段时间后失败并显示以下错误消息:

  

连接超时

我还更改了接收文件的服务器上文件夹的权限,但是,当新文件到达服务器时,它具有公共readwriteexecute权限,它没有默认权限,只有read

我可能做错了什么?

这是我的代码:

$localFile = $_SERVER['DOCUMENT_ROOT'].'/images/'.$file;
$moveFile  = '/public_html/images/'.$file;

$ftp_server   = 'ftp.mywebsite.com';
$ftp_username = 'xxxxxx';
$ftp_password = 'xxxxxx';

$ftp_connection = ftp_connect($ftp_server) or die("Could not connect to $ftp_server");
$ftp_login      = ftp_login($ftp_connection, $ftp_username, $ftp_password);

if ( ftp_put($ftp_connection, $moveFile, $localFile, FTP_ASCII) ) {
    print_r('Completed');
} else {
    print_r('Error');
}

1 个答案:

答案 0 :(得分:1)

我有同样的问题并通过在ftp登录后设置ftp_pasv($conn_id, true);来解决 - 我的代码如下所示 -

$ssl_connection_id = ftp_ssl_connect(FTP_HOST);
if($ssl_connection_id) 
{
  $login = ftp_login($ssl_connection_id,FTP_USERNAME, FTP_PASSWORD);
  ftp_pasv($ssl_connection_id, true);
  if($login)
  {
     if (ftp_put($ssl_connection_id,FTP_PATH.$filename, $localFile, FTP_ASCII)) 
     {
         echo "successfully uploaded \n";

     } 
   }
}

这就是全部,另一个区别是,我使用IP地址代替url(ftp.mywebsite.com),如5.xx.xx.xxx