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

From: Date: Tue, 30 Jul 2002 20:49:52 +0000
Subject: #18646 [Opn->Csd]: ftp_close not working properly
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-15622@lists.php.net to get a copy of this message
ID: 18646 Updated by: kalowsky@php.net Reported By: nohn@php.net -Status: Open +Status: Closed Bug Type: Feature/Change Request Operating System: Compaq Tru64 PHP Version: 4CVS-2002-07-30 New Comment: This bug has been fixed in CVS. You can grab a snapshot of the CVS version at http://snaps.php.net/. In case this was a documentation problem, the fix will show up soon at http://www.php.net/manual/. In case this was a PHP.net website problem, the change will show up on the PHP.net site and on the mirror sites. Thank you for the report, and for helping us make PHP better. Previous Comments: ------------------------------------------------------------------------ [2002-07-30 14:22:31] nohn@php.net 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. ------------------------------------------------------------------------ [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 :-) ------------------------------------------------------------------------ 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 (#15622) next »