ООО ЭкоЮнит
FAQSearchMemberlistUsergroupsFilesLog inRegisterГлавная
printer-friendly view
 
 
AuthorMessage
Вадимм


Joined: 03 May 2018
Show/Hide

Fatal error: Allowed memory size of 47185920 bytes exhausted (tried to allocate 16128 bytes) in /homepages/41/d188293039/htdocs/phpBB2/attach_mod/posting_attachments.php on line 1627

1627, это : $file2 = imagecreatefromjpeg($upload_dir . '/' . basename($this->attach_filename));

)))))

С этим imagecreatefromjpeg, явно нужно что то делать...
Какая-то непобедимая функция... ))
Back to topOffline View user's profile
vlad77 Gender:Male

Модератор


Joined: 15 Mar 2008
Show/Hide

В интернете написано что нехватка памяти может быть вызвана если этой функции подсунуть не jpg файл, или если jpg изображение слишком большое. В первом случае надо проверять тип изображения (на период экспериментирования, руками отбирайте только jpg). Второй случай хуже, рекомендуют менять тариф на более мощный.

_________________
Архив модов с phpbb.com phpbb2refugees.com......php?t=241
Архив модов с phpbb2.de yadi.sk/d/XP53sFs.....93Q36Ap
Back to topOffline View user's profile
Вадимм


Joined: 03 May 2018
Show/Hide

У меня на сервере безлимитка пользуюсь 1&1.. больше уже некуда.. если только безлимит про..
Картинка jpg .. 2,1Мб
Без поворота проходит без проблем..
Неужели миссия невыполнима?
Back to topOffline View user's profile
vlad77 Gender:Male

Модератор


Joined: 15 Mar 2008
Show/Hide

2 мегабайта, это если я не ошибаюсь, максимальный серверный лимит на загрузку файла. Можно сделать ограничение, и не поворачивать большие картинки.
2 мегабайтные картинки обычно никто не разрешает загружать, сервер ведь не резиновый.

Пока поэкспериментируйте с маленькой картинкой. Проверьте как поворачивается небольшая картинка, например в 50 килобайт.

Добавлено спустя 2 минуты 40 секунд:

Без обработки картинка больше своего размера памяти не занимает, а если серверу ее приходится обрабатывать, то потребление памяти может возрасти в несколько раз.
imagecreatefromjpeg() распаковывает упакованную jpg картинку, (как в юниксе не знаю, а в виндовсе графические редакторы внутри себя держат картинки в формате bmp), и работает с распакованной.

Добавлено спустя 2 минуты 18 секунд:

На этом форуме максимальный разрешенный размер картинок 60 килобайт! см. forum.aeroion.ru/a.....es.php?f=1
Back to topOffline View user's profile
Вадимм


Joined: 03 May 2018
Show/Hide

Влад, я пробовал вставлять маленькие фото и они оставляют другие ошибки..

Попытка загрузить оптимизированную картинку (70кб) привела к ошибке:

Warning: exif_read_data() expects parameter 1 to be a valid path, resource given in /homepages/41/d188293039/htdocs/phpBB2/attach_mod/posting_attachments.php on line 1286

Warning: is_uploaded_file() expects parameter 1 to be string, resource given in /homepages/41/d188293039/htdocs/phpBB2/attach_mod/posting_attachments.php on line 1600

Warning: Cannot modify header information - headers already sent by (........)


...

Насколько я понял, эту задачу всё же удалось решить для PHPbb 3
Мод назван Attached image rotator

Значит проблема всё же решаема.. Может там без imagecreatefromjpeg() обошлись как то...?
Back to topOffline View user's profile
vlad77 Gender:Male

Модератор


Joined: 15 Mar 2008
Show/Hide

Я думаю при загрузке 2 мегабайтных фотографий, на вашем сервере, мод для PHPbb3 будет тоже выдавать "Fatal error: Allowed memory size".


Ошибка с exif_read_data() возникает в 1м $file2 = imagecreatefromjpeg($file); , или во 2м $file2 = imagecreatefromjpeg($upload_dir . '/' . basename($this->attach_filename)); варианте?

Добавлено спустя 4 минуты 54 секунды:

В описании мода для 3ки написано
Code:
 работает только в том случае, если в PHP подключена библиотека exif. 
Посмотрите у вас эта библиотека подключена? узнать можно закачав и запустив файл с таким содержимым
Code:
<?php
phpinfo();
?>
Запустите этот файл и посмотрите что там написано про "exif".

_________________
Архив модов с phpbb.com phpbb2refugees.com......php?t=241
Архив модов с phpbb2.de yadi.sk/d/XP53sFs.....93Q36Ap
Back to topOffline View user's profile
Вадимм


Joined: 03 May 2018
Show/Hide

Это что ж за сервер надо иметь, чтобы на нём работал обычный, даже не бетта мод?

Я сейчас попробовал поставить код перед if (!$error && $this->thumbnail == 1) - Ошибка с exif_read_data() вышла и в первом и во втором варианте.

С exif, к сожалению, всё в порядке - он нам уже не поможет)

Или поможет?)


#
1. exif.gif (39.66 KB). Viewed 3 Time(s).    

exif.gif
Back to topOffline View user's profile
vlad77 Gender:Male

Модератор


Joined: 15 Mar 2008
Show/Hide

удалите $image = imagecreatefromjpeg($file_path);

$exif = exif_read_data($file_path); замените на $exif = exif_read_data($upload_dir . '/' . basename($this->attach_filename));



Временно, ниже $exif = exif_read_data(, добавьте print_r($exif);

Добавлено спустя 4 минуты 32 секунды:

exif у вас в порядке. Но на странице manhunter.ru/w....._exif.html рекомендуют exif_read_data заменять на свой код. Если делать мод, то лучше заменить. На других серверах, exif может быть отключен. И написано, что этот код работает лучше, чем exif_read_data().

Добавлено спустя 12 минут 23 секунды:

Лучше сделайте так: $file2 = imagecreatefromjpeg($file); замените на $file2 = $upload_dir . '/' . basename($this->attach_filename);

Временно, ниже $exif = exif_read_data(, добавьте print_r($exif);

остальное без изменений.

print_r($exif); что то выведет на экран, сообщите что вывел.

_________________
Архив модов с phpbb.com phpbb2refugees.com......php?t=241
Архив модов с phpbb2.de yadi.sk/d/XP53sFs.....93Q36Ap
Back to topOffline View user's profile
Вадимм


Joined: 03 May 2018
Show/Hide

Боюсь 5000 символов может не хватить ))

Код оставил такой:

Code:
 
//$file2 = imagecreatefromjpeg($upload_dir . '/' . basename($this->attach_filename));
// Прочитать данные EXIF
//$exif = exif_read_data($file2);
$exif = exif_read_data($upload_dir . '/' . basename($this->attach_filename));
print_r($exif); 
if (!empty($exif['Orientation'])) {
switch ($exif['Orientation']) {
// Поворот на 180 градусов
case 'ftp':
ftp_file($file, basename($this->attach_filename), $this->type);
break;
   }
}


Вывело следующее:

Array ( [FileName] => 20180503_142927_873.jpg [FileDateTime] => 1526213065 [FileSize] => 2113450 [FileType] => 2 [MimeType] => image/jpeg [SectionsFound] => ANY_TAG, IFD0, THUMBNAIL, EXIF, INTEROP [COMPUTED] => Array ( [html] => width="4032" height="2268" [Height] => 2268 [Width] => 4032 [IsColor] => 1 [ByteOrderMotorola] => 0 [ApertureFNumber] => f/1.7 [UserComment] => [UserCommentEncoding] => UNDEFINED [Thumbnail.FileType] => 2 [Thumbnail.MimeType] => image/jpeg [Thumbnail.Height] => 280 [Thumbnail.Width] => 496 ) [Make] => samsung [Model] => SM-G930F [Orientation] => 3 [XResolution] => 72/1 [YResolution] => 72/1 [ResolutionUnit] => 2 [Software] => G930FXXS2DRA9 [DateTime] => 2018:05:03 14:29:27 [YCbCrPositioning] => 1 [Exif_IFD_Pointer] => 202 [THUMBNAIL] => Array ( [ImageWidth] => 496 [ImageLength] => 280 [Compression] => 6 [Orientation] => 3 [XResolution] => 72/1 [YResolution] => 72/1 [ResolutionUnit] => 2 [JPEGInterchangeFormat] => 988 [JPEGInterchangeFormatLength] => 10335 ) [ExposureTime] => 1/113 [FNumber] => 17/10 [ExposureProgram] => 2 [ISOSpeedRatings] => 50 [ExifVersion] => 0220 [DateTimeOriginal] => 2018:05:03 14:29:27 [DateTimeDigitized] => 2018:05:03 14:29:27 [ShutterSpeedValue] => 682/100 [ApertureValue] => 153/100 [BrightnessValue] => 239/100 [ExposureBiasValue] => 0/10 [MaxApertureValue] => 153/100 [MeteringMode] => 5 [Flash] => 0 [FocalLength] => 420/100 [MakerNote] =>  [UserComment] => [SubSecTime] => 0790 [SubSecTimeOriginal] => 0790 [SubSecTimeDigitized] => 0790 [FlashPixVersion] => 0100 [ColorSpace] => 1 [ExifImageWidth] => 4032 [ExifImageLength] => 2268 [InteroperabilityOffset] => 828 [ExposureMode] => 0 [WhiteBalance] => 0 [FocalLengthIn35mmFilm] => 26 [SceneCaptureType] => 0 [ImageUniqueID] => D12LSJD00VM D12LSKH01GM [InterOperabilityIndex] => R98 [InterOperabilityVersion] => 0100 )

Ну, а следом, конечно ошибку:

Warning: Cannot modify header information - headers already sent by (output started at /homepages/41/d188293039/htdocs/phpBB2/attach_mod/posting_attachments.php:1632) in /homepages/41/d188293039/htdocs/phpBB2/includes/page_header.php on line 646
и тд...


Картинка загрузилась, обрезалась, но разумеется вверх тормашками))
Back to topOffline View user's profile
vlad77 Gender:Male

Модератор


Joined: 15 Mar 2008
Show/Hide

Обрезалась, в смысле повернулась?

_________________
Архив модов с phpbb.com phpbb2refugees.com......php?t=241
Архив модов с phpbb2.de yadi.sk/d/XP53sFs.....93Q36Ap
Back to topOffline View user's profile
Вадимм


Joined: 03 May 2018
Show/Hide

Да нет, она изначально вверх тормашками снята, чтобы по ней проверять..
Так вверх тормашками и осталась
А обрезалась - в смысле размерами стала такой, как положено для превюшки

Я вообще превюхи сделал большими, а клик "увеличить" - убрал - так можно сразу картинку в посте смотреть без лишних телодвижений.
Back to topOffline View user's profile
vlad77 Gender:Male

Модератор


Joined: 15 Mar 2008
Show/Hide

Это не надо ставить
Code:
case 'ftp':
ftp_file($file, basename($this->attach_filename), $this->type); 
Ставьте код для поворота изображения, а не для отправки изображения по фтп на другой сервер.

Так ничего не повернется.

_________________
Архив модов с phpbb.com phpbb2refugees.com......php?t=241
Архив модов с phpbb2.de yadi.sk/d/XP53sFs.....93Q36Ap
Back to topOffline View user's profile
Вадимм


Joined: 03 May 2018
Show/Hide

Всё то же - ошибки и уменьшенное, не перевёрнутое изображение

Код:
Code:
     //$file2 = imagecreatefromjpeg($upload_dir . '/' . basename($this->attach_filename));
                    // Прочитать данные EXIF
                        //$exif = exif_read_data($file2);
                        $exif = exif_read_data($upload_dir . '/' . basename($this->attach_filename));
                         //print_r($exif); 
                        if (!empty($exif['Orientation'])) {
                            switch ($exif['Orientation']) {
                                // Поворот на 180 градусов
                                case 3: {
                                    $file = imagerotate($file,180,0);
                                    break;
                                }
                                // Поворот вправо на 90 градусов
                                case 6: {
                                    $file = imagerotate($file,-90,0);
                                    break;
                                }
                                // Поворот влево на 90 градусов
                                case 8: {
                                    $file = imagerotate($file,90,0);
                                    break;
                                }
                            }
                        }

        if (!$error && $this->thumbnail == 1) 
................

Warning: imagerotate() expects parameter 1 to be resource, string given in /homepages/41/d188293039/htdocs/phpBB2/attach_mod/posting_attachments.php on line 1637

Warning: Cannot modify header information - headers already sent by (output started at /homepages/41/d188293039/htdocs/phpBB2/attach_mod/posting_attachments.php:1637) in /homepages/41/d188293039/htdocs/phpBB2/includes/page_header.php on line 646

Warning: Cannot modify header information - headers already sent by (output started at /homepages/41/d188293039/htdocs/phpBB2/attach_mod/posting_attachments.php:1637) in /homepages/41/d188293039/htdocs/phpBB2/includes/page_header.php on line 648

Warning: Cannot modify header information - headers already sent by (output started at /homepages/41/d188293039/htdocs/phpBB2/attach_mod/posting_attachments.php:1637) in /homepages/41/d188293039/htdocs/phpBB2/includes/page_header.php on line 649

Добавлено спустя 39 минут 24 секунды:

Вот здесь, парень столкнулся с той же проблемой нехватки памяти из-за imagecreatefromjpeg()

Пишет, что как-то справился с этим "с помощью ImageDestroy до создания нового образа" (перевод автоматический)
Есть понимание, как это сделать?

Добавлено спустя 15 минут 46 секунд:

Не знаю, хорошая у меня новость или плохая, поступил следующим образом:

перед $file2 = imagecreatefromjpeg($upload_dir . '/' . basename($this->attach_filename));
вписал: ini_set("memory_limit","10000M");

Код получился таким:
Code:
 ini_set("memory_limit","10000M");
            $file2 = imagecreatefromjpeg($upload_dir . '/' . basename($this->attach_filename));
                    // Прочитать данные EXIF
                        //$exif = exif_read_data($file2);
                        $exif = exif_read_data($upload_dir . '/' . basename($this->attach_filename));
                         //print_r($exif); 
                        if (!empty($exif['Orientation'])) {
                            switch ($exif['Orientation']) {
                                // Поворот на 180 градусов
                                case 3: {
                                    $file = imagerotate($file2,180,0);
                                    break;
                                }
                                // Поворот вправо на 90 градусов
                                case 6: {
                                    $file = imagerotate($file2,-90,0);
                                    break;
                                }
                                // Поворот влево на 90 градусов
                                case 8: {
                                    $file = imagerotate($file2,90,0);
                                    break;
                                }
                            }
                        }

        if (!$error && $this->thumbnail == 1)


В итоге, все ошибки пропали, картинка загрузилась, но не перевернулась..
Теперь нужно понять - то ли эта функция, как у Сергея не сработала, то ли $file не передался куда нужно..
Back to topOffline View user's profile
vlad77 Gender:Male

Модератор


Joined: 15 Mar 2008
Show/Hide

imagecreatefromjpeg() теперь нормально работает, потому что в Array передается [Orientation] => 3

то что пришлось вписать ini_set("memory_limit","10000M"); вызвано большим изображением, или при маленьком изображении тоже требуется?

Если в последнем коде (где ini_set) замените все $file на $file2, то есть шанс, что изображение перевернется.

_________________
Архив модов с phpbb.com phpbb2refugees.com......php?t=241
Архив модов с phpbb2.de yadi.sk/d/XP53sFs.....93Q36Ap
Back to topOffline View user's profile
Вадимм


Joined: 03 May 2018
Show/Hide

Ребятушки!!!

Кажись работает!!!

Итак, перед строкой: if (!$error && $this->thumbnail == 1)
Нужно добавить:

Code:
/*ПЕРЕВОРОТ IN*/            
            ini_set("memory_limit","10000M");
            $file2 = imagecreatefromjpeg($upload_dir . '/' . basename($this->attach_filename));
                    // Прочитать данные EXIF
                        //$exif = exif_read_data($file2);
                        $exif = exif_read_data($upload_dir . '/' . basename($this->attach_filename));
                         //print_r($exif); 
                        if (!empty($exif['Orientation'])) {
                            switch ($exif['Orientation']) {
                                // Поворот на 180 градусов
                                case 3: {
                                    $file = imagerotate($file2,180,0);
                                    imagejpeg($file, $upload_dir . '/' . basename($this->attach_filename));
                                    break;
                                }
                                // Поворот вправо на 90 градусов
                                case 6: {
                                    $file = imagerotate($file2,-90,0);
                                    imagejpeg($file, $upload_dir . '/' . basename($this->attach_filename));
                                    break;
                                }
                                // Поворот влево на 90 градусов
                                case 8: {
                                    $file = imagerotate($file2,90,0);
                                    imagejpeg($file, $upload_dir . '/' . basename($this->attach_filename));
                                    break;
                                }
                            }
                            
                        }
          /*ПЕРЕВОРОТ OUT*/ 


Осталось оптимизировать ini_set("memory_limit","10000M"); - 10000, мне кажется многовато)

Last edited by Вадимм on Sun 13 May, 2018 17:31; edited 1 time in total
Back to topOffline View user's profile
Display posts from previous:   

Summary Rating For >> Автоматический поворот фото при закачке через Attachment Mod
Average Rating: 0.00 :: Min Rating: 0 :: Max Rating: 0 :: Number of Ratings: 0
Choose Rating: 1   2   3   4   5  

Similar Topics
Topic Author Forum Replies Last Post
No new posts [RC] Advanced Similar Topics - Похожие темы (AJAX-мод)
автоматический поиск похожих по смыслу тем при создании новой темы или живой поиск
Наименование модификации: Advanced Similar (Related) Topics (compatible with phpBB SEO) Описание: Мод осуществляет поиск тем, схожих по смыслу, при создании новой темы после ввода названия и выводит таблицу результатов
Sergey Поддержка и моды для phpBB3 298 Mon 18 Jan, 2016 11:21 View latest post
DeathMan
No new posts Мод Search Similar Topics Before Posting - Похожие темы при создании новой (AJAX-мод)
автоматический поиск похожих по смыслу тем при создании новой темы или живой поиск
Описание мода: Мод осуществляет поиск тем, схожих по смыслу, при создании новой темы после ввода названия и выводит таблицу результатов поиска под полем названия темы. Версия мода: 1.0.4 Сложность установки: Легко Время
Sergey Поддержка и моды для phpBB2 17 Tue 12 Oct, 2010 19:43 View latest post
Sergey
No new posts Attachment bbCode addon for phpBB2
Аддон позволяет, как в phpBB3, показывать вложения с помощью тега [attachment=][/attachment]
Делаю аддон к File Attachment Mod Аддон позволяет аналогично тегу [attachment=][/attachment] в phpBB3, показывать вложение не в конце, а в начале или в середине текста. При этом основное вложение видят только автор поста
vlad77 Поддержка и моды для phpBB2 22 Wed 01 Nov, 2017 22:44 View latest post
vlad77
No new posts Локализация File attachment mod 2.4.5
Поскольку сайт opentools.de закрыт, выкладываю здесь файлы для русского языка аттачмент мода. Как ни странно, но поиск в сети ничего не дал.
Sergey Архив модов для phpBB 2.0.x 0 Tue 31 Oct, 2006 07:48 View latest post
Sergey
No new posts File Attachment Mod - проблемы
У меня тоже одна проблемка высунулась при установки мода для прикрепления файлов. Вот что пишет мой браузер на открытья моего форума. Quote phpBB : Critical Error Could not query config information DEBUG MODE SQL Error :
Техно червь Поддержка и моды для phpBB2 56 Tue 30 Dec, 2014 17:10 View latest post
Ленсмен






All times are UTC + 3 hours
Users browsing this topic:
Registered Users: None

Jump to:   
printer-friendly view
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum
/a
Username:

Password:

Log me on automatically each visit
  Яндекс.Метрика
CrackerTracker © 2004 - 2018 CBACK.de