The OpenNET Project / Index page

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

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

"Команда system() в Perl" 
Сообщение от Eugene Искать по авторуВ закладки(??) on 29-Июн-05, 18:22  (MSK)
Никак не могу понять в чем проблема.

Когда пишу вот это в командной строке, все работает прекрасно.
/home/eugene/staroffice7/soffice -pt \"PDF converter\" /home/eugene/test.doc

А когда пытаюст сделать то же самое в cgi-скрипте командой system
system("/home/eugene/staroffice7/soffice -pt \"PDF converter\" /home/eugene/test.doc");

то команда не исполняется. Не подскажете почему?

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

 Оглавление

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

1. "Команда system() в Perl" 
Сообщение от gyn61 Искать по авторуВ закладки(ok) on 29-Июн-05, 19:05  (MSK)
>Когда пишу вот это в командной строке, все работает прекрасно.
>/home/eugene/staroffice7/soffice -pt \"PDF converter\" /home/eugene/test.doc
>
>А когда пытаюст сделать то же самое в cgi-скрипте командой system
>system("/home/eugene/staroffice7/soffice -pt \"PDF converter\" /home/eugene/test.doc");
>
>то команда не исполняется. Не подскажете почему?

Наугад:
system("/home/eugene/staroffice7/soffice -pt \\\"PDF converter\\\" /home/eugene/test.doc");

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

2. "Команда system() в Perl" 
Сообщение от Eugene Искать по авторуВ закладки(??) on 29-Июн-05, 19:33  (MSK)
Думуаю, команда правильно написана... Тут что-то странное: скрипт запускается нормально из командной строки: ./test.cgi
И system нормально работает...

Но system не работает, когра запуская скрипт через URL. С правами доступа все нормально...


>>Когда пишу вот это в командной строке, все работает прекрасно.
>>/home/eugene/staroffice7/soffice -pt \"PDF converter\" /home/eugene/test.doc
>>
>>А когда пытаюст сделать то же самое в cgi-скрипте командой system
>>system("/home/eugene/staroffice7/soffice -pt \"PDF converter\" /home/eugene/test.doc");
>>
>>то команда не исполняется. Не подскажете почему?
>
>Наугад:
>system("/home/eugene/staroffice7/soffice -pt \\\"PDF converter\\\" /home/eugene/test.doc");


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

3. "Команда system() в Perl" 
Сообщение от rWizard emailИскать по авторуВ закладки(ok) on 29-Июн-05, 19:41  (MSK)
su -l www -c '/home/eugene/staroffice7/soffice -pt \"PDF converter\" /home/eugene/test.doc'

поможет в дигностике.
или поробуйте в скрипте
open(CMD,'/home.... 2>&1 |'); my @errors = <CMD>; print join('<br>',@errors);
и прочитать что выводиться в stderr/stdout.

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

4. "Команда system() в Perl" 
Сообщение от Eugene Искать по авторуВ закладки(??) on 29-Июн-05, 22:12  (MSK)
Добавил в скрипт

open(CMD,'/home.... 2>&1 |'); my @errors = <CMD>; print join('<br>',@errors);

Получил вот это:

/path/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)

Хотя DISPLAY в environment есть.

Добавил в скрипт
system("export DISPLAY=:25");
но ошибка та же. Разбираюсь. Спасибо за подсказку.

>su -l www -c '/home/eugene/staroffice7/soffice -pt \"PDF converter\" /home/eugene/test.doc'
>
>поможет в дигностике.
>или поробуйте в скрипте
>open(CMD,'/home.... 2>&1 |'); my @errors = <CMD>; print join('<br>',@errors);
>и прочитать что выводиться в stderr/stdout.


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

5. "Команда system() в Perl" 
Сообщение от chip emailИскать по авторуВ закладки(ok) on 29-Июн-05, 23:03  (MSK)
>Получил вот это:
>
>/path/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)
>
>Хотя DISPLAY в environment есть.
>
>Добавил в скрипт
>system("export DISPLAY=:25");
>но ошибка та же. Разбираюсь. Спасибо за подсказку.

Пользователь www (или тот от которого запускается скрипт) не имеет соответсвующих прав для коннекта к X'aм. О чем они[X'ы] Вам честно и сообщают:
"...or check permissions of your X-Server"

Выставление env DISPLAY в данном случае не поможет.

Глубоко в X'ое взаимодействие в данном ракурсе не вдавался. Но, полагаю, нужно рыть в сторону xauth и подобных.

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

6. "Команда system() в Perl" 
Сообщение от Eugene Искать по авторуВ закладки(??) on 29-Июн-05, 23:29  (MSK)
Скрипт из командной строки работает прекрасно. Насколько я понимаю, когда я запускаю скрипт через URL, он также запускается от имени владельца. Так что разницы никакой нет. Или я не прав?

Просто никак не могу понять в чем проблема.

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

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

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

Скрипт конвертит doc в pdf из командной строки.
Зачем ему DIPLAY понадобился при запуске из URL? Эта переменная уже прописана в environments... И из командной стори работает же все...


>>Получил вот это:
>>
>>/path/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)
>>
>>Хотя DISPLAY в environment есть.
>>
>>Добавил в скрипт
>>system("export DISPLAY=:25");
>>но ошибка та же. Разбираюсь. Спасибо за подсказку.
>
>Пользователь www (или тот от которого запускается скрипт) не имеет соответсвующих прав
>для коннекта к X'aм. О чем они[X'ы] Вам честно и сообщают:
>
>"...or check permissions of your X-Server"
>
>Выставление env DISPLAY в данном случае не поможет.
>
>Глубоко в X'ое взаимодействие в данном ракурсе не вдавался. Но, полагаю, нужно
>рыть в сторону xauth и подобных.


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

7. "Команда system() в Perl" 
Сообщение от chip emailИскать по авторуВ закладки(ok) on 05-Июл-05, 09:39  (MSK)
>Скрипт из командной строки работает прекрасно.

Вывод env или set в студию. Из той среды, из которой данный скрипт работает успешно.


> Насколько я понимаю, когда я запускаю
>скрипт через URL, он также запускается от имени владельца.

при отсутсвии различных su*, он запускается от имени пользователя, под которым работает apache. Выполните данный скрипт, как вы выражаетесь, через URL:

#!/bin/sh

echo "Content-type: text/plain"
echo

set 2>/dev/null || env 2>/dev/null

вывод его в студию.

> Так что
>разницы никакой нет. Или я не прав?

не правы

>Просто никак не могу понять в чем проблема.

см. предыдущий мой пост.

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


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

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




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

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