- Home
- Categorie
- Coding e Sistemistica
- PHP
- errore strano
-
errore strano
salve a tutti, in questi giorni sto creando uno script in php tramite un prescript, per scaricare i file dall'interno del mio ftp senza dover linkare i vari file su una pagina in html.
riscontro questo errore:
Warning: basename() expects parameter 1 to be string, array given in /web/htdocs/localhost/home/download/index.php on line 74
Vi riporto di seguito le line di prog:
linea 73 { linea 74 $unit = basename($dir_unit); linea 75 $dots = dots($dir_unit); linea 76 if (is_file($dir_unit) && is_readable($dir_unit)) //if it's a _readable_ file linea 77 {
Spero che qualcuno di voi possa aiutarmi a risolvere il problema.
Grazie a tutti in anticipo
-
Cosa c'è il $dir_unit???
Sembra che gli passi un array e lui si aspetta una stringa.Semmai posta dove lo inizializzi!
-
il problema è che lo script l'ho preso già pronto, c'è la possibilità di usarlo con db e senza e io ho scelto di uttilizzarlo senza, quindi vi dovrai postare tutta la pagina?? è lunghissima.!!! :bho:
<?php $DIR_NAME = dirname($PHP_SELF); $FILE_NAME = basename($PHP_SELF); //where the 2 gif files (dir.gif and file.gif) are stored. Modify as you want $BASE = "../supportotecnico/assets"; $DIRECT_GIF = "$BASE/direct.gif"; $DIR_GIF = "$BASE/dir.gif"; $FILE_GIF = "$BASE/file.gif"; $MAX = 60; //thanks to Ly0n if (!isset($dir)) { if(!isset($HTTP_GET_VARS['dir'])) $dir="."; else $dir = $HTTP_GET_VARS['dir']; } if (empty($dir)) $dir="."; //Ly0n's ultrafast security patch. Many thanks for that. if (!($dir{0} == '.' && stristr($dir, '..') == false)) { die('hacking attempt'); } //thanks to Ly0n if(!is_dir($dir)) { die("$dir is not a valid dir"); } $cwd = preg_replace("/\/\./","","$DIR_NAME/$dir"); print <<< END <table> <tr><td valign="absmiddle"><h1 class="tgtitre">$title</h1></td></tr> <tr><td valign="center"><h1 class="tgtexte">Ti trovi nella cartella: $cwd</h1></td></tr> </table> <hr> END; print "<pre><table>"; print_parent_dir(); $handle = @opendir($dir); //thanks to Ly0n if(!handle) { die("there was an error opening the dir $dir"); } $unitsArray[] = array(); //directory entries: files and directories while (false !== ($unit = readdir($handle))) { $dir_unit = "$dir/$unit"; if ($unit != "." && $unit != ".." && $unit != $FILE_NAME && $unit !="common.inc" && $unit !="config.inc" && $unit !="connect.inc" && $unit !="errors.inc" && $unit !="login_form.inc" && $unit !="access_control.inc" && $unit !="assets" && $unit !="admin" && $unit !="_do_not_delete") { $unitsArray[] = $dir_unit; } } closedir($handle); sort($unitsArray); reset($unitsArray); foreach ($unitsArray as $dir_unit) { ** $unit = basename($dir_unit);** $dots = dots($dir_unit); if (is_file($dir_unit) && is_readable($dir_unit)) //if it's a _readable_ file { $file_size = file_size_to_str(filesize($dir_unit)); print <<< END <tr onmouseover="this.style.backgroundColor = '#D4D4D4'" onmouseout="this.style.backgroundColor = ''"> <td><img src="$FILE_GIF" alt="[FILE]" align="absmiddle"> <a href="$dir_unit"><font class="parent1">$unit</a>$dots [ $file_size bytes ]</font></td> </tr> END; } elseif (is_dir($dir_unit) && @opendir($dir_unit)) //if it's a dir. and could be opened { if (file_exists("$dir_unit/$FILE_NAME")) $dir_link="$dir_unit/$FILE_NAME"; else $dir_link = "$PHP_SELF?dir=$dir_unit"; print <<< END <tr onmouseover="this.style.backgroundColor = '#D4D4D4'" onmouseout="this.style.backgroundColor = ''"> <td><img src="$DIR_GIF" alt="[DIR] " align="absmiddle"> <a href="$dir_link"><font class="parent1">$unit</font></a>$dots [ DIR ]</font></td> </tr> END; } } print "</table></p>"; function print_parent_dir() { global $dir; global $FILE_NAME; global $PHP_SELF; global $DIR_GIF; global $cwd; global $DIRECT_GIF; preg_match("/(.*)\/(.*)$/",$dir,$matches); $parent_dir = $matches[1]; if ($dir=="." && !file_exists("../$FILE_NAME")) return; //else if (strcmp($dir,".")) // != { print "<tr><td><img src=\"$DIRECT_GIF\" alt=\"[DIR] \" align=\"absmiddle\"> <a class=\"parent2\" href=\"$PHP_SELF?dir=$parent_dir\">Parent Directory</a></td></tr>\n"; } } function dots($file) { global $MAX; $length = strlen($file); $dot = 1; for ($i=0; $i<$MAX-$length; ++$i) { $dot==1 ? $line.='.' : $line.=' '; $dot = 1 - $dot; } return strrev($line); } function file_size_to_str($size) { $str = "$size"; $str = strrev($str); for ($i=0; $i<strlen($str); ++$i) { if ($i%3==0 && $i!=0) $new_str.=','; $new_str.=$str*; } return strrev($new_str); } ?>
ho evidenziato di rosso la stringa che vi ho postato prima così avete un punto di partenza. Grazie a tutti per l'aiuto Senamion, sei molto gentile.;)
-
ho risolto, è bastato togliere questa stringa: $unitsArray[] = array(); //directory entries: files and directories
Grazie mille