Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Exec

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Mil-ast
Отправлено: 19 Сентября, 2010 - 09:16:22
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Пытаюсь сделать скриншот сайта, через SSH всё работает прекрасно, однако через php возникают проблемы.
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. exec('Xvfb -ac :1 -screen 0 1024x768x16');
  3. exec('sleep 5');
  4. exec('export DISPLAY=:1');
  5. exec('opera -nomail -nosession -disableinputmethods -fullscreen http://www.yandex.ru');
  6. exec('sleep 5');
  7. exec('xwd -display :1 -root -silent | xwdtopnm | pnmtojpeg -quality=90 -optimize >/home/http/yandex.jpg');
  8.  


ничего не происходит. Собсна ничего и не выводится при exec('Xvfb -help', $out); print_r($out);

Апач с именем 'apache', в /etc/sudoers добавил apache localhost = (root) NOPASSWD: Xvfb
safe_mode отключена

всё-равно не выполняется (((
 
 Top
EuGen Администратор
Отправлено: 20 Сентября, 2010 - 11:27:30
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Это связано с особенностью этой команды. Скорее всего, прав хватает.
Проблема в том, что Xvfb ничего не пишет в STDOUT, но отлично пишет в STDERR. Перенаправление вывода должно помочь:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $out='';
  4. exec('Xvfb -help 2>&1',$out);
  5. echo("\n");
  6. var_dump($out);
  7. echo("\n");
  8. ?>
  9.  


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Mil-ast
Отправлено: 20 Сентября, 2010 - 13:31:47
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Да, действительно, не хватает прав. в случае с php команды exec выполняются от имени апача, в моем случае это юзер apache, у которого естественно не рутовские права. это мне удалось устранить, добавив в /etc/sudoers соответствующую запись для пользователя "apache"
но возникла другая проблема: exec('export DISPLAY=:1'); не работает, приходится для браузера указывать дисплей персонально. но и он не запускается ((( вообще ничего не пойму. ничего в stdout, stderr нет, return пишет 255
xclock, gedit запускаются и фоткаются нормально. видать какой-то глюк в самом браузере...
 
 Top
EuGen Администратор
Отправлено: 20 Сентября, 2010 - 13:37:14
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Попробуйте так же всю последовательность команд сохранить в shell-файл (какой-нибудь commands.ps).
Затем вызывайте exec('sudo commands.ps') - если нет прав или без sudo если есть. (В первом случае нужно sudoers править, что, вроде бы, Вы сделали уже)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
JustUserR
Отправлено: 20 Сентября, 2010 - 17:39:23
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Mil-ast пишет:
Да, действительно, не хватает прав. в случае с php команды exec выполняются от имени апача, в моем случае это юзер apache, у которого естественно не рутовские права. это мне удалось устранить, добавив в /etc/sudoers соответствующую запись для пользователя "apache"
Для огранизации CGI-выплнения приложений на web-сервере с указанием эффетивных имен пользователей соответствующих их владельцам - можно использовать модули типа suexec или suphp - в таком случае можно огранизовать виртуальный хост таким образом чтобы используемое CGI-приложение имело достаточные права - но остальные пользователи не имели лишних привелегий понжающих безопасность


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Администрирование *nix »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB