ftp_nlist returns false on empty directories

Bug #39458 ftp_nlist returns false on empty directories
Submitted: 2006-11-10 12:04 UTC Modified: 2007-01-03 22:48 UTC
Votes:4
Avg. Score:3.5 ± 0.9
Reproduced:3 of 3 (100.0%)
Same Version:1 (33.3%)
Same OS:1 (33.3%)
From: brain at eucoders dot com Assigned: nlopess (profile)
Status: Closed Package: FTP related
PHP Version: 4.4.5-dev OS: Rehat Linux
Private report: No CVE-ID: None

 [2006-11-10 12:04 UTC] brain at eucoders dot com

Description:
------------
ftp_nlist returns false on empty directories


Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports

 [2006-11-10 12:06 UTC] brain at eucoders dot com

ftp_nlist returns false on empty directories instead of empty array

 [2006-11-10 12:07 UTC] brain at eucoders dot com

It seems that ftp_rawlist has the corrected behaviour and it is returning an empty array.

 [2006-11-10 14:20 UTC] brain at eucoders dot com

The problem is that the developer cannot use this ftp_rawlist in case the directory do not exist. In that case, ftp_nlist will return false (unreliable result) and ftp_rawlist return Array() which is again unreliable.

The best fix would be that ftp_nlist return false when the directory does not exist, and Array() when directory is empty.

 [2006-11-10 16:18 UTC] brain at eucoders dot com

It appears that this problem appears on php 4.4.4 and also 4.3.2 version. Other versions should contain the same problem.

 [2006-12-01 06:53 UTC] mspreij at gmail dot com

Seeing similar errors in PHP 5.1.6 on Ubuntu:
- with (local) ftp server ProFTPD, ftp_nlist() returns false for both empty and non-existing directories. ftp_rawlist() behaves properly.
- with external ftp server vsFTPd 2.0.1 (on RedHat), it returns proper empty array, but then that /also/ returns empty arrays for non-existing paths, should be boolean false? ftp_rawlist() does the same strange thing here: empty arrays for both empty and non-existing directories.

 [2006-12-01 16:02 UTC] nlopess@php.net

can you please provide a network dump (e.g. with ethereal) of the connections to the ftp server? (or can you provide the address of your ftp server)
I can't reproduce your problem with a few servers I tried. 

 [2006-12-01 16:12 UTC] nlopess@php.net

OK, forget my last comment. I found a server that exibists this behaviour (ftp.freeradius.org/pub/suse/i386).
I'll work on a patch.

 [2006-12-01 16:38 UTC] nlopess@php.net

This bug has been fixed in CVS.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.


 [2007-01-03 17:06 UTC] brain at eucoders dot com

I installed:

php4 (tar.bz2) (4.3M) php4 (tar.gz) (5.3M) 
Built On: Jan 03, 2007 15:30 GMT

but the problem still appear.

 [2007-01-03 17:07 UTC] brain at eucoders dot com

The sequence of the code is:

ftpconnect();
echo "'";
$a=ftp_nlist($ftp_id, '/httpdocs/_site/s/5/0/3/t');
if($a===false) echo 'false';
else print_r($a);
echo "'";
ftpclose();

(ftpconnect and ftpclose are my defined functions to connect to ftp server)

 [2007-01-03 17:10 UTC] brain at eucoders dot com

The previous sequence is returning false even though the directory exists and have 777 permissions.

 [2007-01-03 18:10 UTC] nlopess@php.net

I didn't merge the patches to PHP 4..

 [2007-01-03 20:06 UTC] nlopess@php.net

After all, I had already merged the patch to php 4.4 some time ago. So I really need access to your FTP server (an anonymous account is sufficient)

 [2015-09-29 08:04 UTC] tejasrathod02 at gmail dot com

I can able to draw the line transperently with pen passing through the obstacles of stage.