The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Экспорт параметра окружения из cgi-скрипта"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Экспорт параметра окружения из cgi-скрипта" 
Сообщение от Eugene Искать по авторуВ закладки(??) on 03-Июл-05, 05:37  (MSK)
Всем привет!

Можно ли из cgi-скрипта экспортировать параметры окружения (environment parameters)? Нужно это сделать, код правильный, но команда export из скрипта не работает. Подскажите, пожалуйста, как решить проблему, уже почти неделю мучаюсь.

Есть cgi-скрипт, написанный на perle. Скрипт простой, конвертит doc в pdf из командной строки, используя принтер staroffisa.

#!/opt/bin/perl -w
print "Content-type: text/html\n\n";

system("/path/staroffice7/soffice -pt \"PDF converter\" /path/test.doc");

open(CMD,'/path/staroffice7/soffice -pt -headless \"PDF converter\" /path/test.doc 2>&1 |'); my @errors = <CMD>; print join('<br>',@errors);

print "DONE!";

Скрипт запускается и работает из командной строки. Когда запускаю его через URL, получаю:

/path/staroffice7/program/soffice.bin X11 error: Can't open display:
Set DISPLAY environment variable, use -display option
or check permissions of your X-Server
(See "man X" resp. "man xhost" for details)


C xauth все нормально, поставил xauth +

Пытаюсь экспортировать DISPLAY parameter в скрипте:
system("export $DISPLAY=:25; /path/staroffice7/soffice -pt \"PDF converter\" /path/test.doc");

Не помогает, получаю ту же самую ошибку. Из командной строки все работает. Может подскажете что делать?:)

  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Экспорт параметра окружения из cgi-скрипта" 
Сообщение от naquad emailИскать по авторуВ закладки(??) on 03-Июл-05, 16:27  (MSK)
>Всем привет!
>
>Можно ли из cgi-скрипта экспортировать параметры окружения (environment parameters)? Нужно это сделать,
>код правильный, но команда export из скрипта не работает. Подскажите, пожалуйста,
>как решить проблему, уже почти неделю мучаюсь.
>
>Есть cgi-скрипт, написанный на perle. Скрипт простой, конвертит doc в pdf из
>командной строки, используя принтер staroffisa.
>
>#!/opt/bin/perl -w
>print "Content-type: text/html\n\n";
>
>system("/path/staroffice7/soffice -pt \"PDF converter\" /path/test.doc");
>
>open(CMD,'/path/staroffice7/soffice -pt -headless \"PDF converter\" /path/test.doc 2>&1 |'); my @errors = <CMD>; print join('<br>',@errors);
>
>print "DONE!";
>
>Скрипт запускается и работает из командной строки. Когда запускаю его через URL,
>получаю:
>
>/path/staroffice7/program/soffice.bin X11 error: Can't open display:
>Set DISPLAY environment variable, use -display option
>or check permissions of your X-Server
>(See "man X" resp. "man xhost" for details)
>
>
>C xauth все нормально, поставил xauth +
>
>Пытаюсь экспортировать DISPLAY parameter в скрипте:
>system("export $DISPLAY=:25; /path/staroffice7/soffice -pt \"PDF converter\" /path/test.doc");
>
>Не помогает, получаю ту же самую ошибку. Из командной строки все работает.
>Может подскажете что делать?:)


В оффициальном мануале сказано:
                     In the strictest sense, it can't be done--the
                   script executes as a different process from
                   the shell it was started from.  Changes to a
                   process are not reflected in its parent--only
                   in any children created after the change.
                   There is shell magic that may allow you to
                   fake it by eval()ing the script's output in
                   your shell; check out the comp.unix.questions
                   FAQ for details.
НО! Кто мешает:
          А) замутить $ENV{'DISPLAY'}=":25";
            Мануал: The hash %ENV contains your current environment.  Setting a value in "ENV" changes the environment for any child
               processes you subsequently fork() off.
          Б) юзать жругие тулзы, насколько мну понимает, ты пытаешься сконвертить что-то в pdf или наоборот, так вот www.freshmeat.net -> pdf converter дал 19 тулзовин для этого дела, мне понравились следующие:
              http://freshmeat.net/projects/xtopdf/ - консольная
              http://freshmeat.net/projects/pstoedit/ - консольная
              http://freshmeat.net/projects/pdftohtml/ - консольная
              http://freshmeat.net/projects/pdf2html/ - консольная
Т.к. они все консольные - можеш смело запускать их без извратов(на серванте StarOffice ??? Это пошло!)
           В) юзать C/C++, в нём есть setenv, getenv(тот же %ENV, только сложнее)

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Экспорт параметра окружения из cgi-скрипта" 
Сообщение от Eugene Искать по авторуВ закладки(??) on 03-Июл-05, 22:06  (MSK)
Я пытался включить $ENV{'DISPLAY'}=":25"; (в Solaris это просто DISPLAY=":25") в скрипт, но это не работает. Выглядело это примерно так:

system("DISPLAY=\":25\"; /path/staroffice7/soffice -pt \"PDF converter\" /path/test.doc");

Причина та же... из официального мануала:) Можно это еще как-то обойти?:)

Насчет тех программ... если Вы посмотрите, то ни одна из этих программ не работает с документами MsWord. Я просмотрел практически весь существующий софт для конвертации doc->pdf и пришел к выводу, что проще настроить pdf принтер для startoffice и запускать его из командной строки. Или написатьмакрос, который также запускать из консоли. Другие программы либо обрабатывали документы не корректно, либо не обрабатывали картинки и таблицы, либо просто не работали:)


>В оффициальном мануале сказано:
>            
>In the strictest sense, it can't be done--the script executes as a
different process from the shell it was started from.  Changes to a process are not reflected in its parent--only in any children created after the change.
>            
>There is shell magic that may allow you to fake it by eval()ing the script's output in your shell; check out the comp.unix.questions FAQ for details.

>НО! Кто мешает:
>          А) замутить
>$ENV{'DISPLAY'}=":25";
>            
>Мануал: The hash %ENV contains your current environment.  Setting a
>value in "ENV" changes the environment for any child
>            
>   processes you subsequently fork() off.
>          Б) юзать жругие тулзы, насколько мну понимает, ты пытаешься сконвертить что-то в pdf или наоборот, так вот www.freshmeat.net -> pdf converter дал 19 тулзовин для этого дела, мне понравились следующие:
>            
>  http://freshmeat.net/projects/xtopdf/ - консольная
>            
>  http://freshmeat.net/projects/pstoedit/ - консольная
>            
>  http://freshmeat.net/projects/pdftohtml/ - консольная
>            
>  http://freshmeat.net/projects/pdf2html/ - консольная
>Т.к. они все консольные - можеш смело запускать их без извратов(на серванте
>StarOffice ??? Это пошло!)
>           В)
>юзать C/C++, в нём есть setenv, getenv(тот же %ENV, только сложнее)
>


  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Экспорт параметра окружения из cgi-скрипта" 
Сообщение от naquad emailИскать по авторуВ закладки(ok) on 03-Июл-05, 22:46  (MSK)
>Я пытался включить $ENV{'DISPLAY'}=":25"; (в Solaris это просто DISPLAY=":25") в скрипт, но
>это не работает. Выглядело это примерно так:
>
>system("DISPLAY=\":25\"; /path/staroffice7/soffice -pt \"PDF converter\" /path/test.doc");
>
>Причина та же... из официального мануала:) Можно это еще как-то обойти?:)
>
>Насчет тех программ... если Вы посмотрите, то ни одна из этих программ не работает с документами MsWord. Я просмотрел практически весь существующий софт для конвертации doc->pdf и пришел к выводу, что проще настроить pdf принтер для startoffice и запускать его из командной строки. Или написатьмакрос, который также запускать из консоли. Другие программы либо обрабатывали документы не корректно, либо не обрабатывали картинки и таблицы, либо просто не работали:)
>
>
>>В оффициальном мануале сказано:
>>            
>>In the strictest sense, it can't be done--the script executes as a
>different process from the shell it was started from.  Changes to
>a process are not reflected in its parent--only in any children
>created after the change.
>>            
>>There is shell magic that may allow you to fake it by eval()ing the script's output in your shell; check out the comp.unix.questions FAQ for details.
>
>>НО! Кто мешает:
>>          А) замутить
>>$ENV{'DISPLAY'}=":25";
>>            
>>Мануал: The hash %ENV contains your current environment.  Setting a
>>value in "ENV" changes the environment for any child
>>            
>>   processes you subsequently fork() off.
>>          Б) юзать жругие тулзы, насколько мну понимает, ты пытаешься сконвертить что-то в pdf или наоборот, так вот www.freshmeat.net -> pdf converter дал 19 тулзовин для этого дела, мне понравились следующие:
>>            
>>  http://freshmeat.net/projects/xtopdf/ - консольная
>>            
>>  http://freshmeat.net/projects/pstoedit/ - консольная
>>            
>>  http://freshmeat.net/projects/pdftohtml/ - консольная
>>            
>>  http://freshmeat.net/projects/pdf2html/ - консольная
>>Т.к. они все консольные - можеш смело запускать их без извратов(на серванте
>>StarOffice ??? Это пошло!)
>>           В)
>>юзать C/C++, в нём есть setenv, getenv(тот же %ENV, только сложнее)
>>

Многоуважаемый, вы с луны не падали?

system("DISPLAY=\":25\"; /path/staroffice7/soffice -pt \"PDF......
        ^^^^^^^^^---------????????
$ENV{"DISPLAY"}=":25";
system(".........

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Экспорт параметра окружения из cgi-скрипта" 
Сообщение от Eugene Искать по авторуВ закладки(??) on 04-Июл-05, 03:22  (MSK)
>Многоуважаемый, вы с луны не падали?
>
>system("DISPLAY=\":25\"; /path/staroffice7/soffice -pt \"PDF......
>        ^^^^^^^^^---------????????
>$ENV{"DISPLAY"}=":25";
>system(".........


$ENV{"DISPLAY"}=":25";
system(".........

Получаю то же самое:

/path/staroffice7/program/soffice.bin X11 error: Can't open display: :25
Set DISPLAY environment variable, use -display option
or check permissions of your X-Server
(See "man X" resp. "man xhost" for details)

Вот.... :( Причем из командной строки все работает нормально. Такая ерунда только при запуске через URL.


  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Экспорт параметра окружения из cgi-скрипта" 
Сообщение от naquad emailИскать по авторуВ закладки(??) on 04-Июл-05, 12:09  (MSK)
>>Многоуважаемый, вы с луны не падали?
>>
>>system("DISPLAY=\":25\"; /path/staroffice7/soffice -pt \"PDF......
>>        ^^^^^^^^^---------????????
>>$ENV{"DISPLAY"}=":25";
>>system(".........
>
>
>$ENV{"DISPLAY"}=":25";
>system(".........
>
>Получаю то же самое:
>
>/path/staroffice7/program/soffice.bin X11 error: Can't open display: :25
>Set DISPLAY environment variable, use -display option
>or check permissions of your X-Server
>(See "man X" resp. "man xhost" for details)
>
>Вот.... :( Причем из командной строки все работает нормально. Такая ерунда только
>при запуске через URL.


В таком случае, мож действительно поюзать так, как оно предлагает:
/path/staroffice7/program/soffice.bin -display ":25", или попробовать сунуть ей 25, он действительно увидел переменную, НО траблы уже с настройкой серванта.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ]
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру