#18646 [Fbk->Opn]: ftp_close not working properly

From: Date: Tue, 30 Jul 2002 18:22:31 +0000
Subject: #18646 [Fbk->Opn]: ftp_close not working properly
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-15614@lists.php.net to get a copy of this message
ID: 18646 Updated by: nohn@php.net Reported By: nohn@php.net -Status: Feedback +Status: Open -Bug Type: FTP related +Bug Type: Feature/Change Request Operating System: Compaq Tru64 PHP Version: 4CVS-2002-07-30 New Comment: Yes. It would be great to make this a feature like mysql_close that also returns TRUE if it succeded or FALSE if it failed. Previous Comments: ------------------------------------------------------------------------ [2002-07-30 12:44:53] msopacua@idg.nl Whether it should remain a void function is a feature request. Maybe it should be changed like below, but that's up to Andrew and Stefan. Index: php_ftp.c =================================================================== RCS file: /repository/php4/ext/ftp/php_ftp.c,v retrieving revision 1.65 diff -u -r1.65 php_ftp.c --- php_ftp.c 26 Jul 2002 22:00:25 -0000 1.65 +++ php_ftp.c 30 Jul 2002 16:41:50 -0000 @@ -1021,7 +1021,10 @@ ZEND_FETCH_RESOURCE(ftp, ftpbuf_t*, &z_ftp, -1, le_ftpbuf_name, le_ftpbuf); - zend_list_delete(Z_LVAL_P(z_ftp)); + if(zend_list_delete(Z_LVAL_P(z_ftp)) != SUCCESS) + { + php_error(E_NOTICE, "Could not close ftp stream"); + } } /* }}} */ ------------------------------------------------------------------------ [2002-07-30 12:11:56] msopacua@idg.nl It's a void function, returning nothing. And nothing == FALSE. Make the last bit: if(ftp_close($ftp) === FALSE) { $result=0; } else { $result=1; } var_dump($ftp); var_dump($result); ---OUTPUT--- resource(5) of type (mysql link) resource(5) of type (Unknown) resource(6) of type (stream) resource(6) of type (Unknown) resource(7) of type (FTP Buffer) resource(7) of type (Unknown) int(1) Than change it to: if(ftp_close($ftp) === NULL) ------------------------------------------------------------------------ [2002-07-30 12:03:27] nohn@php.net Yes well... But the most important thing is this: if (ftp_close($ftp)) { $result = 1; } else { $result = 0; } result is 0 in this case as described below which means that ftp_close returns false even on success. So how to check if the connection was closed? The unaligned access thing happens since... I don't remember when, but see bugs 18588, 18288, 18623, 17449 for some examples. ------------------------------------------------------------------------ [2002-07-30 11:44:52] msopacua@idg.nl Sebas, is the unaligned access issue, part of this problem, or a larger one? Because the ftp_close issue, is expected behaviour: $ cat test.php <?php include('pass.php'); $cs = mysql_connect('localhost:/sql/tmp/mysql.sock', $user, $password); var_dump($cs); mysql_close($cs); var_dump($cs); $fp = fopen('file.txt', 'w'); var_dump($fp); fclose($fp); var_dump($fp); $ftp = ftp_connect($ftp_server); var_dump($ftp); ftp_close($ftp); var_dump($ftp); ?> --OUTPUT-- $ !php php -f test.php resource(5) of type (mysql link) resource(5) of type (Unknown) resource(6) of type (stream) resource(6) of type (Unknown) resource(7) of type (FTP Buffer) resource(7) of type (Unknown) Kindof disturbing that the type remains resource, but it has never bothered me IRL :-) ------------------------------------------------------------------------ [2002-07-30 09:59:55] kalowsky@php.net marking as feedback until Sebastian responds. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/18646 -- Edit this bug report at http://bugs.php.net/?id=18646&edit=1

« previous php.bugs (#15614) next »