parserALT
Страницы форума: ← Назад | 1 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 600 | Дальше →

Не получается работать с Convert (ImageMagick)

#1Digger
05.11.09 12:21
www.parser.ru → | ответить → | в избранное →

Не получается работать с Convert (ImageMagick)

Добрый день.
Есть следующая проблема, при добавлении фото в галерею

^if(-f "../i/gi/${id}.jpg"){
^try{$im[^image::measure[../i/gi/${id}.jpg]]}{$exception.handled(1)}

^if(def $im){
^if($im.width>800){$a[^file::exec[/usr/local/bin/convert;;-scale;800;-antialias;../i/gi/${id}.jpg;../i/gi/${id}.jpg]] $im[^image::measure[../i/gi/${id}.jpg]]}
^if($im.height>600){$a[^file::exec[/usr/local/bin/convert;;-scale;600;-antialias;../i/gi/${id}.jpg;../i/gi/${id}.jpg]]}
}

$a[^file::exec[/usr/local/bin/convert;;-scale;300;-antialias;../i/gi/${id}.jpg;../i/gi/${id}_m.jpg]]

$a[^file::exec[/usr/local/bin/convert;;../i/gi/${id}.jpg;-scale;^if(def $im){^if($im.width>$im.height){x}}104;-size;104x71;xc:white;+swap;-gravity;north;-composite;../i/gi/${id}_s.jpg]]
}

Вот часть скрипта, принцип, большая фотка копируется в /i/gi/${id}.jpg, уменьшенная в /i/gi/${id}_m.jpg, самая маленькая в /i/gi/${id}_s.jpg. Но! Получается так, что копируется только большая, а две маленькие не делаются. Я так понимаю не вызывается скрипт convert. НО! Парсер никак ошибок не выдают, так же как и Apache, то есть фотка добавляется, но уменьшенные не создаются..

Помогите решить проблему. Спасибо!
#2Digger
→ Digger [#1] | 05.11.09 14:42
www.parser.ru → | ответить → | в избранное →
Есть подозрения, что это из-за сборки parser

Ставил эту
http://www.parser.ru/off-line/download/redhat/parser3_3_0_redhat73_grpunlim_cgi_xml.tar.gz
это с --disable-safe-mode

Пробовал возвращать другую сборку, которая была до этого, просило пересобрать парсер с --disable-safe-mode, установил эту - фотки не конвертируются, и ошибок никаких нету.
#3Misha v.3
→ Digger [#1] | 05.11.09 15:28
www.parser.ru → | ответить → | в избранное →

вообще-то в file::exec указывается не полный дисковый путь...

#4Digger
→ Misha v.3 [#3] | 05.11.09 16:00
www.parser.ru → | ответить → | в избранное →
Но когда я так делал, у меня convert находился. Для теста, я изменял путь на /local/bin/convert - выдавало ошибку, что там нету такого файла. Когда /usr/local/bin/convert - находило, но выдавало ошибку, что "запрещено использование файлов вне группы" как-то так, и просьба собрать parser --disable-safe-mode, значит путь правильный..
#5Sumo
→ Digger [#4] | 05.11.09 16:43
www.parser.ru → | ответить → | в избранное →

Вывод неверный...

... в file::exec необходимо указывать путь относительно document-root. (какой-нибудь /../../../usr/local/bin/command)
#6Digger
→ Sumo [#5] | 05.11.09 16:56
www.parser.ru → | ответить → | в избранное →
я задал ему вначале $request:document-root[], и теперь повторюсь.
Путь к convert находится правильно, так бы парсер давал ошибку, что нету такого файла по такому пути, а так путь правильный, почему же он тогда сказал мне пересобрать в disable safe mode, чтобы оперировать файлами?..
#7ViRus
→ Digger [#1] | 05.11.09 19:02 / 19:04
www.parser.ru → | ответить → | в избранное →
Попробуйте в ^file::exec[...] указывать путь к фоткам от корня сайта так:
$env:DOCUMENT_ROOT/i/gi/${id}.jpg

а путь к программе, как Сумо сказал
/../../../usr/local/bin/convert
#8moko
→ Digger [#6] | 05.11.09 19:25
www.parser.ru → | ответить → | в избранное →
почему же он тогда сказал мне пересобрать в disable safe mode, чтобы оперировать файлами?

Не чтобы оперировать файлами, а вероятно чтобы запустить /usr/local/bin/convert, владелец которого root (в сообщении об ошибке пишется полное имя файла, к которому нельзя обратиться). В таких случаях используется промежуточный shell скрипт.
#9Digger
→ ViRus [#7] | 05.11.09 19:29
www.parser.ru → | ответить → | в избранное →
Попробовал уже безлич вариантов. Всё равно уменьшенные картинки не создаются. И ошибок парсера никаких нет
#10Digger
→ moko [#8] | 05.11.09 19:30
www.parser.ru → | ответить → | в избранное →
Этот нюанс обошел установкой сборки с --disable-safe-mode.
#11ViRus
→ Digger [#9] | 05.11.09 20:06 / 20:13
www.parser.ru → | ответить → | в избранное →
Если ошиибок нет, вероятно convert не находит исходную фотку. В этом случае он обычно просто молчит.

Сделайте так:
$testConvert[^file::exec[ПУТЬ-К-CONVERT;;]]
^testConvert.text.save[/test.txt]

если программа найдена и работает, в test.txt попадет ее хелп
#12Олег
→ Digger [#4] | 05.11.09 20:34
www.parser.ru → | ответить → | в избранное →
Добрый день!

Это обходится написанием однострочного скрипта с вашими правами, так называемый врапер. Разместить его можете где угодно и дать права на запуск, например 755

/home/Digger/bin/convert
#!/bin/sh
# /usr/bin/env - находится во всех ос в одном месте, по крайней мере во FreeBSD и Linux
# эта штука находит команду  "convert" которая как Вы заметили может находиться вразных метсах
# и передаёт параметры переданные скрипту $*
/usr/bin/env convert $*


зы: У данного подхода есть проблемма с безопасностью, тк если из ваших скриптов обнаружится возможность модифицировать файл с правами на запуск, то в системе можно сделать всё что угодно с правами вашего пользователя.
ззы: писал по памяти, могут быть очепятки
#13Misha v.3
→ Digger [#9] | 06.11.09 00:15
www.parser.ru → | ответить → | в избранное →
что вы имеете в виду под "ошибками"? парсерные exception? очевидно, что их не будет. вы загляните в .status и .stderr
#14Digger
→ ViRus [#11] | 06.11.09 13:05
www.parser.ru → | ответить → | в избранное →
Попробовал что Вы посоветовали. Выдается exception

Requests:
uri: /admin/index.html?applet=7&act=photo&load=ok&cat=6035

-------------12:03 06/11/2009-------------
applet = 7
load = ok
title = tybjtj
urlfile = 
act = photo
cat = 6035
file transfer: f = hk.png
txt = 


User:
ip: ***
name: ***

--------------------------------------------------------------------------------

Comment:

undefined method
save

Exception details:

/home/bestnarty/domains/bestparty.in.ua/public_html/classes/this_photogallery_admin.p(94)

exception.type:
parser.runtime
#15Digger
→ Олег [#12] | 06.11.09 13:06
www.parser.ru → | ответить → | в избранное →
Не понял данный момент. Где именно, и что создать? Объясните на пальцах, пожалуйста:)
#16ViRus
→ Digger [#14] | 06.11.09 13:43 / 13:50
www.parser.ru → | ответить → | в избранное →

Значит convert'a там нет

Обычно ищу программы так:
$path[/../]
$list[^file:list[$path]]
^list.menu{
    ${path}$list.name<br />
}

И последовательно перебираю переменную path
/../
/../../
/../../../
/../../../usr/

и т.д. Примитивно, но работает. И путь к нему указываю так
/../../../usr/bin/convert

в вашем случае это скорее всего
/../../../../../usr/bin/convert
#17Digger
→ ViRus [#16] | 06.11.09 15:20
www.parser.ru → | ответить → | в избранное →
Спасибо за совет.. нашел таким способом

/../../../../../usr/local/bin/convert

Но там пусто.. никаких скриптов, или вызывающих программ я не увидел.. пробовал вызывать его

/../../../../../usr/local/bin/convert
/../../../../../usr/local/bin/convert/
/../../../../../usr/local/bin/convert/convert

Таким же способом нашел путь к фотографиям, и прописал для них пути

../public_html/i/gi/**.jpg

все равно ничего не происходит... я уже не знаю где рыть. Может он просто не установлен правильно на хостинге?
#18Misha v.3
→ Digger [#17] | 06.11.09 15:49
www.parser.ru → | ответить → | в избранное →

Спасибо за совет.. нашел таким способом

/../../../../../usr/local/bin/convert


и кто-то из дискутирующих считает это более прямым решением, чем «Не получается работать с Convert (ImageMagick)»?



Может он просто не установлен правильно на хостинге?


жжошь! пеши есчо!
#19ViRus
→ Digger [#17] | 06.11.09 15:54
www.parser.ru → | ответить → | в избранное →

Попробуйте еще так

Положите в корень сайта любой test.jpg
$testConvert[^file::exec[/../../../../../usr/local/bin/convert;;$env:DOCUMENT_ROOT/test.jpg;$env:DOCUMENT_ROOT/test.png]]

Собственно в итоге должен получиться test.png рядом с test.jpg. Эта форма вызова 100% работает если convert и test.jpg существуют и если парсер -- grpunlim.
#20Олег
→ Digger [#15] | 06.11.09 22:18
www.parser.ru → | ответить → | в избранное →
1) Что такое --disable-safe-mode?
2) Атеперь что мы сделали?



Подсказки смотреть после ответа на вопросы :)
1) --disable-safe-mode - грубо говоря такой if который посылает всех подальше, если попытаться запустить скрипт, приложение которым не владеешь или ты root

Пример:
Вы пользователь Digger(1005) и состоишь в группе Digger(1005) - в скобкай условный id пользовтеля
есть пользователь root(0) который состоит в группе wheel(0) в bsd как-то так называется
есть исполняемый файл парсера владелец и группа у которого Digger:Digger

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

Контрольные вопросы
a) Кому приналежит файл /usr/local/bin/convert
б) Кому принадлежит созданный Вами файл /home/Digger/bin/convert.sh
в) Какая реакщия будет в случае а и в случае б? Почему?


2)
а) Создав файл в вашей домшней директории вы автоматичческие являетесеь его владельцем и он автоматически попадает в вашу групп обычно с правами 644 (погуглите на эту тему, оч полезно)
б) меняете права на 755 (гуглить), те разрешаете его запускать себе, группе и кому не поподя и ещё несколько прав наздаёте налево и на право(гуглить)
в) когда парсер запускается и проверяет права файла он признаёт его за своего, как следствие у него не возникает дополнительных вопросов и он продолжает работать дальше
#21Digger
→ ViRus [#19] | 09.11.09 11:45
www.parser.ru → | ответить → | в избранное →
Попробовал.. ничего не получилось..

сборка: parser3_3_0_redhat73_grpunlim_cgi_xml
#22Digger
→ Misha v.3 [#18] | 09.11.09 11:55
www.parser.ru → | ответить → | в избранное →
Достойный ответ модератора..
#23Sumo
→ Digger [#22] | 09.11.09 12:24
www.parser.ru → | ответить → | в избранное →

Только сначала Вам ответили по делу - «Не получается работать с Convert (ImageMagick)», но вы просто проигнорировали этот ответ.

#24Digger
→ Misha v.3 [#13] | 09.11.09 12:29
www.parser.ru → | ответить → | в избранное →
Я уже писал. Ошибок никаких нету.
По-крайней мере они нигде не высвечиваются.
Parser Exception - нету.

Что такое .status, .stderr, где искать эти файлы?
#25Sumo
→ Digger [#24] | 09.11.09 12:32
www.parser.ru → | ответить → | в избранное →

«Поля» (документация)

#26Digger
→ Sumo [#25] | 09.11.09 12:41
www.parser.ru → | ответить → | в избранное →
За это спасибо!!

вот ошибки

convert: UnableToOpenConfigureFile `delegates.xml' @ configure.c/GetConfigureOptions/589.

convert: NoDecodeDelegateForThisImageFormat `.../public_html/test.jpg' @ constitute.c/ReadImage/530.

convert: MissingAnImageFilename `.../public_html/test.png' @ convert.c/ConvertImageCommand/2838. 1
#27Misha v.3
→ Digger [#22] | 09.11.09 13:21
www.parser.ru → | ответить → | в избранное →
а как ещё было прокомментировать ваше сообщение о том, что вы не удосужились выяснить, работает-ли вообще у вас nconvert, а занялись поисками/сборками parser без safe моде и ковырянием с парсерным кодом.

P.S. это я ещё сдерживал себя во время написания того комментария :)
#28Digger
→ Misha v.3 [#27] | 09.11.09 13:24
www.parser.ru → | ответить → | в избранное →
А как это выяснить по-другому!?

во-вторых не nconvert, а convert

Я сообщил в тех.поддержку хостинга, что мне нужен imagemagick convert, они якобы установили, и дали путь к нему. Я в скрипте прописал, и стала появляться parser exception: Recompile parser .. --disable-safe-mode.
#29Misha v.3
→ Digger [#28] | 09.11.09 14:56
www.parser.ru → | ответить → | в избранное →
варианты проверки:
1. зайти шелом и запустить нужную программу из командной строки
2. то-же самое, но написав .sh файл который вызывает нужную программу с фиксированными параметрами и весь output пишет в файл
3. попробовать например из perl
4. если уж используете парсер, то хотя бы про метод, с помощью которого вызывается внешний скрипт, можно было страничку текста прочитать (а там и про .status и про .stderr есть), особенно учитывая тот факт, что вы ранее некорректно использовали путь к скрипту в этом методе и вам на это указали.

P.S. convert, nconvert -- в данном случае разницы никакой. любой внешний скрипт проверяется примерно аналогично
#30Digger
→ Misha v.3 [#29] | 09.11.09 16:06
www.parser.ru → | ответить → | в избранное →
«Не получается работать с Convert (ImageMagick)»

вот результат проверки..
#31Sumo
→ Digger [#30] | 09.11.09 17:03
www.parser.ru → | ответить → | в избранное →

Переводить пробовали? Хостеру часть из них (после перевода станет понятно какие) показывали?

Ну и пункты 1 и 2 из Мишиного сообщения попробовать стоит.
#32Digger
→ Sumo [#31] | 09.11.09 17:18
www.parser.ru → | ответить → | в избранное →
Я-то перевёл(: Хостеру отправил. жду ответа..
Спасибо за ответы, надеюсь хостер знает что делать, и решит проблему..

Я так понимаю это решается только с его стороны.

PS Неправильно установлен convert? Или собран, или чё-то в этом роде..?
Страницы форума: ← Назад | 1 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 600 | Дальше →