Задать вопрос

PHP: Запуск несколько shell команд?

Есть задача делать скриншоты веб страниц, для этого использую консольную утилиту CutyCapt, так как для ее работы нужен x-сервер, то запускаю ее через фейковый xvfb, например:

xvfb-run --server-args="-screen 0, 1024x768x24" ./CutyCapt --url=... --out=...



но делать мне нужно за раз несколько скринов разных страниц, пробую так
xvfb-run --server-args="-screen 0, 1024x768x24" ./CutyCapt --url=... --out=... && ./CutyCapt --url=... --out=... && ./CutyCapt --url=... --out=...



в консоли все это прекрасно работает, но вот через пхп ф-ю system оно обрабатывает только первую команду, до && и далает один скрин. Как бы решить?

P.S. Думаю что можно как-то решить через bash script (.sh), но к сожалению я в этом не силен, и хотелось бы все же какое-то решение без изврата (так же не работает, исполняет только первую команду)
  • Вопрос задан
  • 3528 просмотров
Подписаться 7 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
WNeZRoS
@WNeZRoS
<?php
	if(isset($_POST['urls'])) {
		$urls = explode("\n", trim((string)$_POST['urls']));
		$sh = time() % rand(1000,9999) * rand(10,99); $sh .= '.sh';
		
		$f = fopen($sh, 'w');
		foreach($urls as $k=>$v) {
			fwrite($f, '/usr/bin/cutycapt --url='.trim($v).' --out=img'.$k.'.png'."\n");
		}
		fclose($f);
		
		system('/usr/bin/xvfb-run --server-args="-screen 0, 1024x768x24" /bin/bash '.$sh);
		
		foreach($urls as $k=>$v) {
			echo '<img src="img'.$k.'.png">
';
		}
	}
?>
<form action="capt.php" method="POST">
<textarea name="urls"></textarea>
<input type="submit">
</form>

У меня так работает
Ответ написан
Riateche
@Riateche
Попробуйте так:
bash -c 'xvfb-run --server-args="-screen 0, 1024x768x24" ./CutyCapt --url=... --out=... && ./CutyCapt --url=... --out=... && ./CutyCapt --url=... --out=...'
Ответ написан
Silentium
@Silentium
А если так поставить кавычки?
xvfb-run --server-args="-screen 0, 1024x768x24" './CutyCapt --url=... --out=... && ./CutyCapt --url=... --out=... && ./CutyCapt --url=... --out=...'
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы