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

Как передать через PHP CURL данные в «php://stdin»?

Собственно есть сторонний скрипт, который читает данные из stdin. Модифицировать этот скрипт я не могу.

$file_descriptor = fopen("php://stdin", "r");

if ($file_descriptor) {
	while (!feof($file_descriptor)) {
		$raw_source .= fread($file_descriptor, 1024);
	}

	fclose($file_descriptor);
}


Как их туда передать с помощью CURL? Как понимаю нужно что-то на подобии -d ключа для консолькной версии CURL

Что-то похожее на это. Только рабочее))
if (!$ch = curl_init()) {
	exit(0);
}

$queue= "Hello";

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
	//"Content-Type: application/octet-stream",
	"Content-Type: text/plain",
	'Content-Length: ' . strlen($queue))
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $queue);

curl_setopt($ch, CURLOPT_URL, $script_url);
$page_html = curl_exec($ch);
echo $page_html;
  • Вопрос задан
  • 447 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 2
zenden2k
@zenden2k
PHP & C++ programmer
Вам надо запускать новый процесс PHP и как-то передавать туда данные.
Чтобы вариант через curl работал, нужно, чтобы скрипт читал php://input а не php://stdin
Ответ написан
Комментировать
Ninazu
@Ninazu Автор вопроса
$return = array();
$absolute_local_script_filename = "/home/user/public_html/index.php";
$stdin = 'Hello';
exec("echo '{$stdin}' | php -f {$absolute_local_script_filename}", $return);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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