|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Request #68462 ftp-put: debugging fail after "PORT command successful"
Submitted: 2014-11-20 13:26 UTC Modified: 2014-11-20 16:46 UTC
Avg. Score:4.2 ± 1.0
Reproduced:2 of 3 (66.7%)
Same Version:1 (50.0%)
Same OS:0 (0.0%)
From: stratflow at hotmail dot com Assigned:
Status: Open Package: FTP related
PHP Version: 5.4.35 OS: FreeBSD 9.2-RELEASE-p10
Private report: No CVE-ID: None
View Add Comment Developer Edit
Anyone can comment on a bug. Have a simpler test case? Does it work for you on a different platform? Let us know!
Just going to say 'Me too!'? Don't clutter the database with that please — but make sure to vote on the bug!
Your email address:
Solve the problem:
34 - 15 = ?
Subscribe to this entry?

 [2014-11-20 13:26 UTC] stratflow at hotmail dot com
ftp_put() in some cases returns FALSE after transfer of a file.
The last logged error in $php_errormsg is 
  "ftp_put() [function.ftp-put.php]: PORT command successful"

It is unclear if this is a problem within PHP:FTP, a clientside filesystem problem or a serverside problem.

The same script runs 100 transfers every 15 mins from one server off to different platforms of different flavours. We have recently encountered a HUGE increase of these errors which would indicate a problem in the source system.

As far as we can see, there is no (documented?) way to debug this problems and look into the server responses. There was one proposal how to solve something like this in
but that never made it into the tree.

Test script:

$ftp         = ftp_connect($ftphost,21,15);
$ftp_login   = ftp_login($ftp, $ftpuser, $ftppass);
$ftp_pasv    = ftp_pasv($ftp, true);

$ftp_up      = ftp_put($ftp, $trgfile, $srcfile, FTP_BINARY); 

# now check upload status:
if (!$ftp_up) { 
  print "upload check failed [" . $php_errormsg . "]<";
} else {
  print "upload successful";

Expected result:
Access to some sort of log of last server messages.

The last erromessage in php_errormsg is might be misleading.

Note 2:
Unless you're transferring to a server to which you have ftp-logfile access, it's impossible to debug this from the serverside.

Actual result:
ftp_put() returns FALSE for undebuggable reason.

Misleading or unclear messages in $php_errormsg


Add a Patch

Pull Requests

Add a Pull Request


AllCommentsChangesGit/SVN commitsRelated reports
 [2014-11-20 13:41 UTC] stratflow at hotmail dot com
In addition, the following, ambiguious warnings might get issued:

Warning: ftp_put() [function.ftp-put.php]: php_connect_nonb() failed: Operation now in progress (36) in xxxxx.php on line xxx

Warning: ftp_put() [function.ftp-put.php]: Type set to I in xxxxx.php on line xxx
 [2014-11-20 14:45 UTC] stratflow at hotmail dot com
Further digging lead to a patch that was never accepted and might address a component of this issue:
 [2014-11-20 16:46 UTC] stratflow at hotmail dot com
Even further digging lead to E_WARNINGs:

call to ftp_put() in troubleful cases trigger this sequence of warnings:

ftp_put() [function.ftp-put.php]: php_connect_nonb() failed: Operation now in progress (36)

ftp_put() [function.ftp-put.php]: Entering Passive Mode (92,42,188,103,192,0).

looking at $php_errormsg after ftp_put(), only the last message (Entering Passive Mode) is recorded. This is misleading. In fact, php_connect_nonb() had already failed and should trigger a proper response!
PHP Copyright © 2001-2021 The PHP Group
All rights reserved.
Last updated: Tue Jun 15 11:01:24 2021 UTC