#31971 [Opn->Fbk]: ftp_login fails on messsage from FTP+SSL server (234 Enabling SSL)

From: Date: Tue, 17 May 2005 09:06:43 +0000
Subject: #31971 [Opn->Fbk]: ftp_login fails on messsage from FTP+SSL server (234 Enabling SSL)
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-79082@lists.php.net to get a copy of this message
 ID:               31971
 Updated by:       sniper@php.net
 Reported By:      frantisek at augusztin dot com
-Status:           Open
+Status:           Feedback
 Bug Type:         FTP related
 Operating System: Linux (Fedora Core 3)
 PHP Version:      4.3.11
 New Comment:

Please try using this CVS snapshot:

  http://snaps.php.net/php5-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5-win32-latest.zip




Previous Comments:
------------------------------------------------------------------------

[2005-05-13 15:23:43] frantisek at augusztin dot com

The SSL_CTX_set_options must be called for both control and data
connection :

264a265
>                       SSL_CTX_set_options(ctx,SSL_OP_ALL);
1405a1407,1408
>               SSL_CTX_set_options(ctx,SSL_OP_ALL);
>

------------------------------------------------------------------------

[2005-05-05 12:57:00] frantisek at augusztin dot com

Here is the solution (now it works for me) .

Here is the diff (against 4.3.11) for file ext/ftp/ftp.c:

265c265,266
<
---
>                       SSL_CTX_set_options(ctx,SSL_OP_ALL);
>

Yeah, it's one line at 265th line - here is how it looks in source code
:

			ctx = SSL_CTX_new(SSLv23_client_method());
			if (ctx == NULL) {
				php_error_docref(NULL TSRMLS_CC, E_WARNING, "ftp_login: failed to
create the SSL context");
				return 0;
			}
			SSL_CTX_set_options(ctx,SSL_OP_ALL);

			ftp->ssl_handle = SSL_new(ctx);

------------------------------------------------------------------------

[2005-02-22 00:48:29] iliaa@php.net

Please provide address of FTP/SSL server which can be used to replicate
the bug.

------------------------------------------------------------------------

[2005-02-14 17:32:32] frantisek at augusztin dot com

After examining (and debuging PHP code) i found out, that the ftp_login
function exits after getting the response for PBSZ command (from
ext/ftp/ftp.c, lines 305-313) :

           if (!ftp->old_ssl) {

                /* set protection buffersize to zero */
                if (!ftp_putcmd(ftp, "PBSZ", "0")) {
                    return 0;
                }
                if (!ftp_getresp(ftp)) {
                    return 0; /* <<< here it exits
                }

Why ? What can i do to make it work ? As i said, using regular FTP+SSL
client it works.

------------------------------------------------------------------------

[2005-02-14 16:19:47] frantisek at augusztin dot com

Description:
------------
PHP returns following error when connecting using example code:
Warning: ftp_login() : Enabling SSL in /var/www/html/test.php on line
3

Using FTP client the following messages are displayed in the log window
of the client :

*** Connecting to 'XXX.XXX.XXX.XXX:21'...
220 Service Ready for new User
AUTH TLS
234 Enabling SSL

FTP clearly fails on this messsage. But i don't understand why, because
i found in source code, that 234 is not an error, but a valid result
code for this operation.
FTP System type is "215 NETWARE  Type : L8"

Reproduce code:
---------------
<?php
$connection = ftp_ssl_connect("server",21);
$login = ftp_login($connection, "name","password");
ftp_close($connection);
?>

Expected result:
----------------
No warning message and successfull connection to FTP server.

Actual result:
--------------
Warning: ftp_login() : Enabling SSL in /var/www/html/test.php on line 3


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=31971&edit=1


Thread (13 messages)

« previous php.bugs (#79082) next »