Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: ошибка в библеотеке загрузки
Форумы портала PHP.SU » » Вопросы новичков » ошибка в библеотеке загрузки

Страниц (3): [1] 2 3 »
 

1. foozzi - 09 Ноября, 2011 - 16:27:23 - перейти к сообщению
при попытке загрузить файл вылазит ошибка
Parse error: syntax error, unexpected T_ELSE in ......../lib/lib.upload.php on line 40
сам код:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. ini_set('display_errors',1);
  3.    
  4. function upload_file($max_size=3145728) {
  5.         $upload_path = dirname (__FILE__).$upload_dir;
  6.         $upload_filename = basename($_FILES["filename"]["name"]);
  7.         $upload_dir = '/uploads/';
  8.         $upload_link = "http://".$_SERVER ["HTTP_HOST"].dirname ($_SERVER ["PHP_SELF"]).$upload_dir.$upload_filename;
  9.         if ($_FILES)
  10.         {
  11.                 switch ($_FILES['filename']['type'])
  12.                 {
  13.                         case 'image/jpeg':      $ext='jpg'; break;
  14.                         case 'image/pjpeg':     $ext='jpg'; break;
  15.                         case 'image/png':       $ext='png'; break;
  16.                         case 'application/pdf': $ext='pdf'; break;
  17.                         case 'application/x-bzip2':     $ext='bz2'; break;
  18.                         case 'application/x-gzip':      $ext='gz'; break;
  19.                         case 'application/x-tar':       $ext='tar gz'; break;
  20.                         case 'application/x-troff-man': $ext='man'; break;
  21.                         case 'application/zip': $ext='zip'; break;
  22.          case 'audio/mpeg':     $ext='mp3'; break;
  23.                
  24.                         default:                        $ext='';
  25.                 }      
  26.                 if ($ext == true && $_FILES['filename']['size'] < $max_size)
  27.                 {
  28.                         /*$file=time().'.'.$ext;*/
  29.                         $m=move_uploaded_file ($_FILES['filename']['tmp_name'], /*TE_DIR.'/upload/'*/$upload_dir.$upload_filename);
  30.                         if ($m) $mes='Файл загружен.'; {
  31.           echo "Линки:<br>";
  32.      echo "<input type='text' size=80 onclick='this.select()' value='".$upload_link."'><br><br>";
  33.      echo "HTML Линк:<br>";
  34.      echo "<input type='text' size=80 onclick='this.select()' value=\"<a href='".$upload_link."'>".$upload_link."</a>\"><br><br>";
  35.      echo "BB-Code Линк:<br>";
  36.      echo "<input type='text' size=80 onclick='this.select()' value='[url]".$upload_link."[/url]'><br><br>";
  37.      echo "<a href='?".md5(microtime())."'>Загрузить другой файл</a>"; }
  38.      
  39.                         else $mes='Ошибка. Возможно не хватает прав доступа.';
  40.                 }
  41.                 else $mes='Ошибка. Тип файла не поддерживается или его размер больше допустимого.';
  42.         }
  43.         return $mes;
  44. }
  45. ?>
2. EuGen - 09 Ноября, 2011 - 16:31:28 - перейти к сообщению
http://phpfaq[dot]ru/debug
foozzi пишет:
if ($m) $mes='Файл загружен.'; {

- подозреваю, что нужно открывающую скобку ставить здесь (сразу после if($m) а не после оператора). Иначе Ваш if распространяется только на первый оператор, а затем идет непонятный блок { ... }, за которым следует else (и по этой причине он, естественно, никак не относится к этому if)
3. foozzi - 09 Ноября, 2011 - 17:07:53 - перейти к сообщению
поставил, теперь пустая страница и ничего не выводится,файлы так же не грузятся, поставил вывод ошибок

сразу после
4. snikers987 - 09 Ноября, 2011 - 17:22:33 - перейти к сообщению
после else в 40 строке поставь {
5. foozzi - 09 Ноября, 2011 - 17:26:32 - перейти к сообщению
snikers987 пишет:
после else в 40 строке поставь {

Parse error: syntax error, unexpected T_ELSE in /.........../lib/lib.upload.php on line 44
там же попробовал поставить то же { та же ошибка
6. foozzi - 10 Ноября, 2011 - 20:24:03 - перейти к сообщению
никто не может помочь?
(Добавление)
даже уже вот так сделал, индикатор загрузки файла в браузере идет до 100% ( тоесть файл загружается) после чего белая страница, ошибок нет

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.         ini_set('display_errors',1);
  3.       error_reporting(E_ALL);
  4.          $upload_path = dirname (__FILE__).$upload_dir;
  5.          $upload_filename = basename($_FILES["filename"]["name"]);
  6.          $upload_dir = '/uploads';
  7.          $upload_link = "http://".$_SERVER ["HTTP_HOST"].dirname ($_SERVER ["PHP_SELF"]).$upload_dir.$upload_filename;
  8.    
  9. function upload_file($max_size=3145728) {
  10.         global $upload_path, $upload_filename, $upload_dir, $upload_link;
  11.  
  12.         if ($_FILES)
  13.         {
  14.                 switch ($_FILES['filename']['type'])
  15.                 {
  16.                         case 'image/jpeg':      $ext='jpg'; break;
  17.                         case 'image/pjpeg':     $ext='jpg'; break;
  18.                         case 'image/png':       $ext='png'; break;
  19.                         case 'application/pdf': $ext='pdf'; break;
  20.                         case 'application/x-bzip2':     $ext='bz2'; break;
  21.                         case 'application/x-gzip':      $ext='gz'; break;
  22.                         case 'application/x-tar':       $ext='tar gz'; break;
  23.                         case 'application/x-troff-man': $ext='man'; break;
  24.                         case 'application/zip': $ext='zip'; break;
  25.          case 'audio/mpeg':     $ext='mp3'; break;
  26.                
  27.                         default:                        $ext='';
  28.                 }      
  29.                 if ($ext == true && $_FILES['filename']['size'] <= $max_size)
  30.                 {
  31.                         /*$file=time().'.'.$ext;*/
  32.           $m=move_uploaded_file($_FILES['filename']['tmp_name'], /*TE_DIR.'/upload/'*/$upload_dir.$upload_filename);
  33.                        
  34.                         if ($m){
  35.           ini_set('display_errors',1);
  36.      error_reporting(E_ALL);
  37.           $mes='Файл загружен.';
  38.           echo "Линки:<br>";
  39.      echo "<input type='text' size=80 onclick='this.select()' value='".$upload_link."'><br><br>";
  40.      echo "HTML Линк:<br>";
  41.      echo "<input type='text' size=80 onclick='this.select()' value=\"<a href='".$upload_link."'>".$upload_link."</a>\"><br><br>";
  42.      echo "BB-Code Линк:<br>";
  43.      echo "<input type='text' size=80 onclick='this.select()' value='[url]".$upload_link."[/url]'><br><br>";
  44.      echo "<a href='?".md5(microtime())."'>Загрузить другой файл</a>"; }
  45.      
  46.      elseif(!$m) {
  47.  
  48.         print_r($_FILES["filename"]["error"] );
  49.                         $mes='Ошибка. Возможно не хватает прав доступа.';
  50.           }
  51.                 else {
  52.                 print_r($_FILES["filename"]["error"] );
  53.                 $mes='Ошибка. Тип файла не поддерживается или его размер больше допустимого.';
  54.          }
  55.         return $mes;
  56.    }
  57.   }
  58.  }
  59. ?>
7. Bio man - 11 Ноября, 2011 - 00:03:03 - перейти к сообщению
совет аффтару, используй редактор, где видно где что открыто, не закрыто, на подобие adobe dreamvewer 5cs, zend studio. И не возникнет больше таких синтаксических ошибок
8. foozzi - 11 Ноября, 2011 - 00:51:37 - перейти к сообщению
редактор у меня видит где что открыто и закрыто, так вот там все нормально и все закрыто, можно по теме а не офтопить?
9. Panoptik - 11 Ноября, 2011 - 01:10:56 - перейти к сообщению
у каждого свои методы дебага. можно попробовать вставить обыкновенные выводы меток в разных частях кода например echo 1; echo 2; и т.д.

еще попробуйте закоментировать определенные куски кода вплоть до комментирования всего , а потом начинайте частично раскоментировть и смотрите где возникает ошибка

кстати у вас функция возвращает ретурн в условии, а без условия ретурн нету. а значит если это условие не выполнено я имею ввиду строку

if ($ext == true && $_FILES['filename']['size'] <= $max_size) { // у меня она 37

то функция ничего не вернет, а значит вы ничего и не увидите попробуйте перенести ретурн после всех ифов
10. foozzi - 11 Ноября, 2011 - 01:48:06 - перейти к сообщению
Panoptik сделал, эффект тот же
11. Panoptik - 11 Ноября, 2011 - 09:03:37 - перейти к сообщению
если ошибок нет, может проблема в каком другом файле?
12. foozzi - 11 Ноября, 2011 - 16:38:16 - перейти к сообщению
есть форма и есть библеотека эта, вот сама форма:
CODE (html):
скопировать код в буфер обмена
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  4.                 <link rel="stylesheet" type="text/css" media="all" href="style.css">
  5.         </head>
  6.         <body>
  7.                 <table width="100%" height="100%"><tr valign="center"><td align="center" nowrap><div id="upload">
  8.  
  9.  
  10. <?php
  11.  
  12. echo 'Выберите файл | Максимальный размер 10 MB | Запрещенно заливать исполняемые файлы<br><br>';
  13.                                 echo '<form enctype="multipart/form-data" action="lib/lib.upload.php" method="post">';
  14.                            echo '<input type="file" name="filename" size="45">';
  15.                                 echo '<input type="submit" value=" Грузить! " name="upload">';
  16.                                 echo '</form>';
  17.  
  18.  
  19.  
  20. ?>
  21.  
  22.  
  23.  
  24. </body>
  25. </html>
  26.  
13. Bio man - 11 Ноября, 2011 - 17:00:38 - перейти к сообщению
foozzi пишет:
Parse error: syntax error, unexpected T_ELSE in /.........../lib/lib.upload.php on line 44
там же попробовал поставить то же { та же ошибка
foozzi пишет:
редактор у меня видит где что открыто и закрыто, так вот там все нормально и все закрыто

видимо не умеешь пользоватся или просто не понемаешь где что ставить.
установи Adobe Dreamweaver CS5.5, он красным подмечивает синтаксичиские ошибки. это не оффтоп, это совет новечка новечку. мне кажется не правильно блоки расставил раз ошибок нет и не чего не возвращается, а может и возвращается но ты это просто не выводишь на экран. echo upload_file($max_size);
14. foozzi - 11 Ноября, 2011 - 17:51:06 - перейти к сообщению
Bio man я использую linux debian и не использую поприетарное ПО, у меня есть замечательный редактор BlueFish который так же само видит закрытые и не закрытые функции, я не могу поверить что нет решения к проблемме, сори я там кинул не тот код там где небыло закрытия if у меня то он стоит.... все перепробовал =(
15. snikers987 - 11 Ноября, 2011 - 17:58:20 - перейти к сообщению
А где функция вызывается то?

 

Powered by ExBB FM 1.0 RC1