PHP ftp_put警告警告:ftp_put()[function.ftp-put]:类型设置为I. in

Adi*_*att 9 php ftp file transfer

当我尝试使用PHP的ftp_put函数上传文件时,之前它出错了:

Warning: ftp_put() [function.ftp-put]: No data connection

现在,我试图将被动模式放在:

ftp_pasv($conn_id, true);

然后出现错误:

Warning: ftp_put() [function.ftp-put]: Type set to I. in

ftp_login已正确完成,并表示已成功完成.

现在它给出了新警告:警告: ftp_put() [function.ftp-put]: abc.txt: Cannot open or remove a file containing a running program.

任何想法,为什么文件不转移?

谢谢 !

这是我的代码片段:

    $conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server");

    $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass) or die("You do not have access to this ftp server!");

    if ((!$conn_id) || (!$login_result)) {
        // wont ever hit this, b/c of the die call on ftp_login
        echo "<span style='color:#FF0000'><h2>FTP connection has failed! <br />";
        echo "Attempted to connect to $ftp_server for user $ftp_user_name</h2></span>";
        exit;
    } else {
        //echo "Connected to $ftp_server, for user $ftp_user_name <br />";
    }

    //turn passive mode on
    ftp_pasv($conn_id, true);

    $upload = ftp_put($conn_id, $destination_file.$name, $filename, FTP_BINARY);

    if (!$upload) {
        echo "<span style='color:#FF0000'><h2>FTP upload of $filename has failed!</h2></span> <br />";
    } else {
        echo 'Uploaded';    
    }

 ftp_close($conn_id);
Run Code Online (Sandbox Code Playgroud)

Mar*_*tin 15

http://php.net/ftp_pasv

$resource = ftp_connect('ftp.example.com');
ftp_login($resource, 'username', 'password');

# set this to true
ftp_pasv($resource, true);

ftp_get(...);
ftp_put(...);
Run Code Online (Sandbox Code Playgroud)

我收到相同(不是非常具有描述性)的错误消息E_WARNING ftp_get(): Type set to I..

我发现这是因为运行PHP的服务器没有可见的公共IP(它是我工作站上的虚拟服务器).

解决方案是使用被动模式.默认设置(活动模式)在实时服务器上没有问题,因为实时服务器具有可见的公共IP.

  • 添加ftp_pasv对我有用.谢了哥们! (3认同)
  • 请注意,“ftp_pasv”调用必须在登录后完成,否则将不起作用。 (3认同)

Tan*_*oro 3

当 FTP 守护程序卡在打开的上传文件并等待您写入时,您看到的最后一个错误就会发生。

每当您通过 FTP 服务器成功打开连接时,请准备在进程完成或由于任何错误而终止时使用以下函数关闭连接。

ftp_close($conn_id);
Run Code Online (Sandbox Code Playgroud)

您的脚本可能将其连接保持打开状态,并且 FTP 服务器对此感到困惑。尝试在适当的地方添加ftp_close,看看脚本运行是否更流畅。