1. Мы продолжаем публиковать интересные статьи на тему SocialEngine 4. Одна из статей посвящена правильному выбору сервера для вашей социальной сети, а другая содержит советы по увеличению производительности платформы. Также мы добавили большую статью о пользовательских уровнях. Ознакомиться со статьями вы можете в разделе Вопросы и Ответы SocialEngine 4.
  2. Вам кажется, что ваша версия SocialEngine 4, работает медленно?

    Голосуйте. Пишите свою версию системы, железо на чем работает и количество пользователей. Будем увеличивать производительность :-) Подробнее

  3. В связи с участившимися случаями попыток продажи пользователями форума различных "сборок" коммерческих социальных платформ, обычно основанных на SocialEngine 3, вводится новое правило для форума. Запрещается создание тем или размещение в уже созданных предложений о продаже или размещение ссылок на сайты, где происходит продажа "сборок". Пользователи, которые продолжат свою коммерческую деятельность в данном направлении, будут заблокированы. Подробнее.

проблема с загрузко фотографий.

Discussion in 'Прочая Поддержка - Help Requests' started by GodPloutos, Aug 23, 2011.

  1. GodPloutos Thread starter <b>Мошенник</b>


    Offline
    Message Count:
    34
    Likes Received:
    0
    При загрузке фотографий не создается thumb файл. скажите пожалуйста в чем может быть проблема? сами фотки заливаются а вот thumb не создается. гд библиотека стоит....
  2. ExTRANE Active member


    Offline
    Message Count:
    278
    Likes Received:
    62
    Проблема вот в чем ...
    Звони на хостинг, и говори пусть тебе отключат open_basedir

    Это всё из-за этого, 100% ... такое же было, долго мучался ...
  3. GodPloutos Thread starter <b>Мошенник</b>


    Offline
    Message Count:
    34
    Likes Received:
    0
    к сожалению, это не так. у меня выделенный сервер сам отключил не помогло. по прежнему не генерирует трамбы
  4. ExTRANE Active member


    Offline
    Message Count:
    278
    Likes Received:
    62
    У меня такая же проблема была!!! ...
    фотки на ФТП загружает, но превью не создает ...
    Я для теста, все файлы с сайта перенес на другой хостинг, бесплатный ... там всё работало ... я сделал вывод что это из-за настроек сервера! ...

    Обратился к хостеру, через неделю мне всё исправили ... я спросил в чем была проблема они говорят что директива open_basedir ...

    Но можеш взять в include/class_upload.php заменить всё на это:

    PHP:

    <?php

    /* $Id: class_upload.php 44 2009-01-30 03:45:23Z john $ */


    //  THIS CLASS CONTAINS UPLOAD-RELATED METHODS.
    //  IT IS USED DURING THE UPLOAD OF A FILE.
    //  METHODS IN THIS CLASS:
    //    new_upload()
    //    upload_file()
    //    upload_photo()
    //    upload_thumb()
    //    image_resize_on()
    //    ConvertBMP2GD()
    //    imagecreatefrombmp()


    class se_upload
    {
        
    // INITIALIZE VARIABLES
        
    var $is_error 0;        // DETERMINES WHETHER THERE IS AN ERROR OR NOT, CONTAINS RELEVANT ERROR CODE

        
    var $file_name;            // CONTAINS NAME OF UPLOADED FILE
        
    var $file_type;            // CONTAINS UPLOADED FILE MIME TYPE
        
    var $file_size;            // CONTAINS UPLOADED FILE SIZE
        
    var $file_tempname;        // CONTAINS TEMP NAME OF UPLOADED FILE
        
    var $file_error;        // CONTAINS UPLOADED FILE ERROR
        
    var $file_ext;            // CONTAINS UPLOADED FILE EXTENSION
        
    var $file_width;        // CONTAINS UPLOADED IMAGE WIDTH
        
    var $file_height;        // CONTAINS UPLOADED IMAGE HEIGHT

        
    var $is_image;            // DETERMINES WHETHER FILE IS AN IMAGE OR NOT
        
    var $file_maxwidth;        // CONTAINS THE MAXIMUM WIDTH OF AN UPLOADED IMAGE
        
    var $file_maxheight;        // CONTAINS THE MAXIMUM HEIGHT OF AN UPLOADED IMAGE






        // THIS METHOD SETS INITIAL VARS SUCH AS FILE NAME
        // INPUT: $file REPRESENTING THE NAME OF THE FILE INPUT
        //      $file_maxsize REPRESENTING THE MAXIMUM ALLOWED FILESIZE
        //      $file_exts REPRESENTING AN ARRAY OF LOWERCASE ALLOWABLE EXTENSIONS
        //      $file_types REPRESENTING AN ARRAY OF LOWERCASE ALLOWABLE MIME TYPES
        //      $file_maxwidth (OPTIONAL) REPRESENTING THE MAXIMUM WIDTH OF THE UPLOADED PHOTO
        //      $file_maxheight (OPTIONAL) REPRESENTING THE MAXIMUM HEIGHT OF THE UPLOADED PHOTO
        // OUTPUT:

        
    function new_upload($file$file_maxsize$file_exts$file_types$file_maxwidth ""$file_maxheight "")
      {
          
    // GET FILE VARS
          
    $this->file_name $_FILES[$file]['name'];
          
    $this->file_type strtolower($_FILES[$file]['type']);
          
    $this->file_size $_FILES[$file]['size'];
          
    $this->file_tempname $_FILES[$file]['tmp_name'];
          
    $this->file_error $_FILES[$file]['error'];
          
    $this->file_ext strtolower(str_replace("."""strrchr($this->file_name".")));

          
    $file_dimensions = @getimagesize($this->file_tempname);
          
    $this->file_width $file_dimensions[0];
          
    $this->file_height $file_dimensions[1];
          if(
    $file_maxwidth == "") { $file_maxwidth $this->file_width; }
          if(
    $file_maxheight == "") { $file_maxheight $this->file_height; }
          
    $this->file_maxwidth $file_maxwidth;
          
    $this->file_maxheight $file_maxheight;

          
    // ENSURE THE FILE IS AN UPLOADED FILE
          
    if( !is_uploaded_file($this->file_tempname) )
          
    $this->is_error 718;

          
    // CHECK THAT FILESIZE IS LESS THAN GIVEN FILE MAXSIZE
          
    if( $this->file_size $file_maxsize )
          
    $this->is_error 719;

          
    // CHECK EXTENSION OF FILE TO MAKE SURE ITS ALLOWED
          
    if( !in_array($this->file_ext$file_exts) )
          
    $this->is_error 720;

          
    // CHECK MIME TYPE OF FILE TO MAKE SURE ITS ALLOWED
          
    if( !in_array($this->file_type$file_types) )
          
    $this->is_error 720;

          
    // DETERMINE IF FILE IS A PHOTO (AND IF GD CAN BE USED) - DO NOT COUNT GIFs AS IMAGES, OTHERWISE ANIMATION WON'T WORK!!
          
    if( $file_dimensions !== FALSE && in_array($this->file_ext, Array('jpg''jpeg''png''bmp''gif')) !== FALSE )
        {
            
    $this->is_image 1;
            
    // ENSURE THE UPLOADED FILE IS NOT LARGER THAN MAX WIDTH AND HEIGHT IF GD IS NOT AVAILABLE
            
    if( !$this->image_resize_on() )
          {
              
    $this->is_image 0;
              if(
    $this->file_width $this->file_maxwidth || $this->file_height $this->file_maxheight)
              
    $this->is_error 721;
            }

            
    // IF THIS IS A GIF, RESIZE ONLY IF IT IS GREATER THAN THE MAX WIDTH/HEIGHT, OTHERWISE SIMPLY MOVE
            
    if($this->file_ext == 'gif' && $this->file_width <= $this->file_maxwidth && $this->file_height <= $this->file_maxheight)
          {
              
    $this->is_image 0;
            }
          }
        else
        {
            
    $this->is_image 0;
          }
        }

      
    // END new_upload() METHOD









        // THIS METHOD UPLOADS A FILE
        // INPUT: $file_dest REPRESENTS THE DESTINATION OF THE UPLOADED FILE
        // OUTPUT: BOOLEAN INDICATING WHETHER UPLOAD SUCCEEDED OR FAILED

        
    function upload_file($file_dest)
      {
          
    // TRY MOVING UPLOADED FILE, RETURN ERROR UPON FAILURE
        
    if( !move_uploaded_file($this->file_tempname$file_dest) )
        {
            
    $this->is_error 718;
            return 
    false;
          }
        else
        {
            
    chmod($file_dest0777);
            return 
    true;
          }
        }

      
    // END upload_file() METHOD









        // THIS METHOD UPLOADS A PHOTO
        // INPUT: $photo_dest REPRESENTS THE DESTINATION OF THE UPLOADED PHOTO
        //      $file_maxwidth (OPTIONAL) REPRESENTING THE MAXIMUM WIDTH OF THE UPLOADED PHOTO
        //      $file_maxheight (OPTIONAL) REPRESENTING THE MAXIMUM HEIGHT OF THE UPLOADED PHOTO
        // OUTPUT: BOOLEAN INDICATING WHETHER UPLOAD SUCCEEDED OR FAILED
        
    function upload_photo($photo_dest$file_maxwidth ""$file_maxheight "")
      {
          
    // SET MAX WIDTH AND HEIGHT
          
    if( !$file_maxwidth  $file_maxwidth  $this->file_maxwidth ;
          if( !
    $file_maxheight $file_maxheight $this->file_maxheight;

          
    // CHECK IF DIMENSIONS ARE LARGER THAN ADMIN SPECIFIED SETTINGS
          // AND SET DESIRED WIDTH AND HEIGHT
        
    $width  $this->file_width ;
        
    $height $this->file_height;
        if( 
    $height $file_maxheight )
        {
          
    $width floor($width $file_maxheight $height);
          
    $height $file_maxheight;
        }
        if( 
    $width $file_maxwidth )
        {
          
    $height floor($height $file_maxwidth $width);
          
    $width $file_maxwidth;
        }


          
    // RESIZE IMAGE AND PUT IN USER DIRECTORY
          
    switch($this->file_ext)
        {
            case 
    "gif":
              
    $file imagecreatetruecolor($width$height);
              
    $new imagecreatefromgif($this->file_tempname);
              
    $kek=imagecolorallocate($file255255255);
              
    imagefill($file,0,0,$kek);
              
    imagecopyresampled($file$new0000$width$height$this->file_width$this->file_height);
              
    imagejpeg($file$photo_dest95);
              
    ImageDestroy($new);
              
    ImageDestroy($file);
              break;

            case 
    "bmp":
              
    $file imagecreatetruecolor($width$height);
              
    $new $this->imagecreatefrombmp($this->file_tempname);
              for(
    $i=0$i<256$i++) { imagecolorallocate($file$i$i$i); }
              
    imagecopyresampled($file$new0000$width$height$this->file_width$this->file_height);
              
    imagejpeg($file$photo_dest95);
              
    ImageDestroy($new);
              
    ImageDestroy($file);
              break;

            case 
    "jpeg":
            case 
    "jpg":
              
    $file imagecreatetruecolor($width$height);
              
    $new imagecreatefromjpeg($this->file_tempname);
              for(
    $i=0$i<256$i++) { imagecolorallocate($file$i$i$i); }
              
    imagecopyresampled($file$new0000$width$height$this->file_width$this->file_height);
              
    imagejpeg($file$photo_dest95);  
              
    ImageDestroy($new);
              
    ImageDestroy($file);
              break;

            case 
    "png":
              
    $file imagecreatetruecolor($width$height);
              
    $new imagecreatefrompng($this->file_tempname);
              for(
    $i=0$i<256$i++) { imagecolorallocate($file$i$i$i); }
              
    imagecopyresampled($file$new0000$width$height$this->file_width$this->file_height);
              
    imagejpeg($file$photo_dest95);
              
    ImageDestroy($new);
              
    ImageDestroy($file);
              break;
          }

          
    chmod($photo_dest0777);

          return 
    true;
        }

      
    // END upload_photo() METHOD









        // THIS METHOD CREATES A SQUARE THUMBNAIL
        // INPUT: $photo_dest REPRESENTS THE DESTINATION OF THE UPLOADED PHOTO
        //      $file_maxdim (OPTIONAL) REPRESENTING THE MAXIMUM WIDTH AND HEIGHT OF THE UPLOADED PHOTO
        // OUTPUT: BOOLEAN INDICATING WHETHER UPLOAD SUCCEEDED OR FAILED

        
    function upload_thumb($photo_dest$file_maxdim "60")
      {
          
    // SET DESIRED WIDTH AND HEIGHT
        
    $x 0;
        
    $y 0;
          
    $width $this->file_width;
          
    $height $this->file_height;
          if(
    $width $height)
        {
            
    $x ceil(($width $height) / 2);
            
    $width $height;
          }
        elseif(
    $width $height)
        {
            
    $y ceil(($height $width) / 2);
            
    $height $width;
          }

          
    // RESIZE IMAGE AND PUT IN USER DIRECTORY
          
    switch($this->file_ext)
        {
            case 
    "gif":
              
    $file imagecreatetruecolor($file_maxdim$file_maxdim);
              
    $new imagecreatefromgif($this->file_tempname);
              
    $kek=imagecolorallocate($file255255255);
              
    imagefill($file,0,0,$kek);
              
    imagecopyresampled($file$new00$x$y$file_maxdim$file_maxdim$width$height);
              
    imagejpeg($file$photo_dest100);
              
    ImageDestroy($new);
              
    ImageDestroy($file);
              break;

            case 
    "bmp":
              
    $file imagecreatetruecolor($file_maxdim$file_maxdim);
              
    $new $this->imagecreatefrombmp($this->file_tempname);
              for(
    $i=0$i<256$i++) { imagecolorallocate($file$i$i$i); }
              
    imagecopyresampled($file$new00$x$y$file_maxdim$file_maxdim$width$height);
              
    imagejpeg($file$photo_dest100);
              
    ImageDestroy($new);
              
    ImageDestroy($file);
              break;

            case 
    "jpeg":
            case 
    "jpg":
              
    $file imagecreatetruecolor($file_maxdim$file_maxdim);
              
    $new imagecreatefromjpeg($this->file_tempname);
              for(
    $i=0$i<256$i++) { imagecolorallocate($file$i$i$i); }
              
    imagecopyresampled($file$new00$x$y$file_maxdim$file_maxdim$width$height);
              
    imagejpeg($file$photo_dest100);
              
    ImageDestroy($new);
              
    ImageDestroy($file);
              break;

            case 
    "png":
              
    $file imagecreatetruecolor($file_maxdim$file_maxdim);
              
    $new imagecreatefrompng($this->file_tempname);
              for(
    $i=0$i<256$i++) { imagecolorallocate($file$i$i$i); }
              
    imagecopyresampled($file$new00$x$y$file_maxdim$file_maxdim$width$height);
              
    imagejpeg($file$photo_dest100);
              
    ImageDestroy($new);
              
    ImageDestroy($file);
              break;
          }

          
    chmod($photo_dest0777);

          return 
    true;
        }

      
    // END upload_thumb() METHOD









      // THIS METHOD CHECKS FOR NECESSARY IMAGE RESIZING SUPPORT
      // INPUT:
      // OUTPUT: BOOLEAN INDICATING WHETHER GD CAN BE USED TO RESIZE IMAGES

      
    function image_resize_on()
      {
        
    // CHECK IF GD LIBRARY IS INSTALLED
        
    if( !is_callable('gd_info') ) return false;

        
    $gd_info gd_info();
        
    preg_match('/\d/'$gd_info['GD Version'], $match);
        
    $gd_ver $match[0];

        if( 
    $gd_ver ) return false;
        if( empty(
    $gd_info['GIF Read Support']) ) return false;
        if( empty(
    $gd_info['JPG Support']) && empty($gd_info['JPEG Support']) ) return false;
        if( empty(
    $gd_info['PNG Support']) ) return false;

        return 
    true;
      }
      
      
    // END image_resize_on() METHOD









        // THIS METHOD CONVERTS BMP TO GD
        // INPUT: $src REPRESENTING THE SOURCE OF THE BMP
        //      $dest (OPTIONAL) REPRESENTING THE DESTINATION OF THE GD
        // OUTPUT: BOOLEAN INDICATING WHETHER THE CONVERSION SUCCEEDED OR FAILED

        
    function ConvertBMP2GD($src$dest false)
      {
          if(!(
    $src_f fopen($src"rb")))
        {
            return 
    false;
          }

          if(!(
    $dest_f fopen($dest"wb")))
        {
            return 
    false;
          }

          
    $header unpack("vtype/Vsize/v2reserved/Voffset"fread($src_f14));
          
    $info unpack("Vsize/Vwidth/Vheight/vplanes/vbits/Vcompression/Vimagesize/Vxres/Vyres/Vncolor/Vimportant"fread($src_f40));

          
    extract($info);
          
    extract($header);

          if(
    $type != 0x4D42) {  // signature "BM"
            
    return false;
          }

          
    $palette_size $offset 54;
          
    $ncolor $palette_size 4;
          
    $gd_header "";
          
    // true-color vs. palette
          
    $gd_header .= ($palette_size == 0) ? "\xFF\xFE" "\xFF\xFF";
          
    $gd_header .= pack("n2"$width$height);
          
    $gd_header .= ($palette_size == 0) ? "\x01" "\x00";
          if(
    $palette_size) {
            
    $gd_header .= pack("n"$ncolor);
          }
          
    // no transparency
          
    $gd_header .= "\xFF\xFF\xFF\xFF";

          
    fwrite($dest_f$gd_header);

          if(
    $palette_size)
        {
            
    $palette fread($src_f$palette_size);
            
    $gd_palette "";
            
    $j 0;
            while(
    $j $palette_size) {
              
    $b $palette{$j++};
              
    $g $palette{$j++};
              
    $r $palette{$j++};
              
    $a $palette{$j++};
              
    $gd_palette .= "$r$g$b$a";
            }
            
    $gd_palette .= str_repeat("\x00\x00\x00\x00"256 $ncolor);
            
    fwrite($dest_f$gd_palette);
          }

          
    $scan_line_size = (($bits $width) + 7) >> 3;
          
    $scan_line_align = ($scan_line_size 0x03) ? - ($scan_line_size 0x03) : 0;

          for(
    $i 0$l $height 1$i $height$i++, $l--)
        {
            
    // BMP stores scan lines starting from bottom
            
    fseek($src_f$offset + (($scan_line_size $scan_line_align) * $l));
            
    $scan_line fread($src_f$scan_line_size);
            if(
    $bits == 24) {
              
    $gd_scan_line "";
              
    $j 0;
              while(
    $j $scan_line_size) {
                
    $b $scan_line{$j++};
                
    $g $scan_line{$j++};
                
    $r $scan_line{$j++};
                
    $gd_scan_line .= "\x00$r$g$b";
              }
            } elseif(
    $bits == 8) {
              
    $gd_scan_line $scan_line;
            } elseif(
    $bits == 4) {
              
    $gd_scan_line "";
              
    $j 0;
              while(
    $j $scan_line_size) {
                
    $byte ord($scan_line{$j++});
                
    $p1 chr($byte >> 4);
                
    $p2 chr($byte 0x0F);
                
    $gd_scan_line .= "$p1$p2";
              }
              
    $gd_scan_line substr($gd_scan_line0$width);
            } elseif(
    $bits == 1) {
              
    $gd_scan_line "";
              
    $j 0;
              while(
    $j $scan_line_size) {
                
    $byte ord($scan_line{$j++});
                
    $p1 chr((int) (($byte 0x80) != 0));
                
    $p2 chr((int) (($byte 0x40) != 0));
                
    $p3 chr((int) (($byte 0x20) != 0));
                
    $p4 chr((int) (($byte 0x10) != 0));
                
    $p5 chr((int) (($byte 0x08) != 0));
                
    $p6 chr((int) (($byte 0x04) != 0));
                
    $p7 chr((int) (($byte 0x02) != 0));
                
    $p8 chr((int) (($byte 0x01) != 0));
                
    $gd_scan_line .= "$p1$p2$p3$p4$p5$p6$p7$p8";
              }
              
    $gd_scan_line substr($gd_scan_line0$width);
            }

            
    fwrite($dest_f$gd_scan_line);
          }

          
    fclose($src_f);
          
    fclose($dest_f);

          return 
    true;
        }

      
    // END ConvertBMP2GD() METHOD









        // THIS METHOD CREATES IMAGE FROM BMP FUNCTION
        // INPUT: $filename REPRESENTING THE NAME OF THE FILE TO BE USED FOR CREATION
        // OUTPUT: BOOLEAN INDICATING WHETHER THE CREATION SUCCEEDED OR FAILED
        
    function imagecreatefrombmp($filename)
      {
          
    $tmp_name tempnam("/tmp""GD");
          if(
    $this->ConvertBMP2GD($filename$tmp_name))
        {
            
    $img imagecreatefromgd($tmp_name);
            
    unlink($tmp_name);
            return 
    $img;
          }
        else
        {
            return 
    false;
          }
        }

      
    //END imagecreatefrombmp() METHOD
    }

    ?>
  5. GodPloutos Thread starter <b>Мошенник</b>


    Offline
    Message Count:
    34
    Likes Received:
    0
    ExTRANE, как не странно загрузка этого файла что вы дали помогла, я сейчас с нетбука, крайне неудобно работать завтра с нормального пк сравню в чем же разница была. и всетаки отключение опенбейсдир не помогало
  6. ExTRANE Active member


    Offline
    Message Count:
    278
    Likes Received:
    62
    Рад был помочь ...) ...
  7. GodPloutos Thread starter <b>Мошенник</b>


    Offline
    Message Count:
    34
    Likes Received:
    0
    Сравнил файл, интересно то что не нашел отличия они были идентичны, я вот думаю может дело в BOM было?
  8. ExTRANE Active member


    Offline
    Message Count:
    278
    Likes Received:
    62
    в кодировке?) ...
  9. GodPloutos Thread starter <b>Мошенник</b>


    Offline
    Message Count:
    34
    Likes Received:
    0
    Да но позже выяснилось что и не в этом дело. Я уже забил хотя обидно что так и не узнал в чем проблема. ваш файл из стандартной же сборки?
  10. ExTRANE Active member


    Offline
    Message Count:
    278
    Likes Received:
    62
    Вот этого я не знаю) мне пол двигла переписали))))))

Share This Page

All rights reserved SocEngine.ru ©