PEAR is discontinued

This is a static archive preserving historical releases and metadata. No new packages or updates will be published. For updates to existing packages, or to publish new packages, please use Composer and Packagist.

Home » Networking » Net_FTP » Bug #7270

rm_dir recursive

Details

Submitted2006-03-31 12:47 UTC
Fromfabio dot esposito at gmail dot com
Assignedjorrit
StatusClosed
PackageNet_FTP
PHP Version4.3.11
OSLinux
Roadmaps1.3.3

Comments

[2006-03-31 12:47 UTC] fabio dot esposito at gmail dot com

Description:
------------
When we try to remove recursively a dir on a unix server this error appear: "Uninitialized string offset: 0" (on windows it works)

Test script:
---------------
We change your _rm_dir_recursive function as below
(see "/**/" comments) and now the code works on any plataform

function _rm_dir_recursive($dir)
{
if (substr($dir, (strlen($dir) - 1), 1) != "/") {
return $this->raiseError("Directory name '$dir' is invalid, has to end with '/'", NET_FTP_ERR_REMOTEPATHNODIR);
}
$file_list = $this->_ls_files($dir);
foreach ($file_list as $file) {
$file = $dir.$file["name"];
$res = $this->rm($file);
if ($this->isError($res)) {
return $res;
}
}
$dir_list = $this->_ls_dirs($dir);
foreach ($dir_list as $new_dir) {
/**
*
in past the test isn't the position 'name' of the array but the entire array and the loop never ends. now works fine
*
**/
if ($new_dir['name'] == '.' || $new_dir['name'] == '..') {
continue;
}
$new_dir = $dir.$new_dir["name"]."/";
//echo $new_dir."<br/>";
$res = $this->_rm_dir_recursive($new_dir);
if ($this->isError($res)) {
return $res;
}
}
$res = $this->_rm_dir($dir);
if (PEAR::isError($res)) {
return $res;
} else {
return true;
}
}

Expected result:
----------------
remove recursively a directory

Actual result:
--------------
with the patch the script works fine