LINUX.ORG.RU

Как из-под PHP запустить BASH программу, которой нужно передать поток символов?

 , , не web


0

1

Здравствуйте!


Что-то я туплю с утра. Есть у меня программа solver, которой скармливается поток символов. В потоке символов есть пробелы, кавычки, переносы строк. В bash программа запускается так:

#!/bin/sh

STREAM=$(cat data_a.txt && echo -e "\n+++" && cat data_b.txt)
echo "${STREAM}" | ./solver

Теперь предположим, что в PHP у меня есть переменная $phpstream, в которой лежит поток символов, который нужно передать данной программе и получить в ответ решение.

Вопрос: как блин из-под PHP запустить программу с передачей потока?

Я пытаюсь так:

$result = array();
exec("cd solver; STREAM=$(".$phpstream."); echo ${STREAM} | ./solver", $result);

Но из-за того что в потоке есть кавычки и пробелы, команда не выполняется.

★★★★★

Ответ на: комментарий от anonymous

Не тут походу из-за того, что надо и писать и читать потоки, popen() не прокатит.

Нужен proc_open().

Xintrea ★★★★★
() автор топика

Но из-за того что в потоке есть кавычки и пробелы, команда не выполняется.

Экранируйте. Даже функция есть соответствующая — escapeshellcmd.

gatsu
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.