Никак не могу понять в чем проблема.Когда пишу вот это в командной строке, все работает прекрасно.
/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");то команда не исполняется. Не подскажете почему?
>Когда пишу вот это в командной строке, все работает прекрасно.
>/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");
Думуаю, команда правильно написана... Тут что-то странное: скрипт запускается нормально из командной строки: ./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");
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.
Добавил в скрипт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.
>Получил вот это:
>
>/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 и подобных.
Скрипт из командной строки работает прекрасно. Насколько я понимаю, когда я запускаю скрипт через 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 и подобных.
>Скрипт из командной строки работает прекрасно.Вывод env или set в студию. Из той среды, из которой данный скрипт работает успешно.
> Насколько я понимаю, когда я запускаю
>скрипт через URL, он также запускается от имени владельца.при отсутсвии различных su*, он запускается от имени пользователя, под которым работает apache. Выполните данный скрипт, как вы выражаетесь, через URL:
#!/bin/sh
echo "Content-type: text/plain"
echoset 2>/dev/null || env 2>/dev/null
вывод его в студию.
> Так что
>разницы никакой нет. Или я не прав?не правы
>Просто никак не могу понять в чем проблема.
см. предыдущий мой пост.