LINUX.ORG.RU

Передача текста программы в php через echo


0

1

Приветствую! Так и не разобрался с секретными 1 &1 > 2 и т.д. т.п. А явно ж всё просто. Задача передать текст программы на php из командной строки с пом. echo ну или чем получится. Проблема в том что ключ "-r" после которого можно передавать текст не работает. Поэтому приходится выдумывать. Т.е. надо было бы вот так:

$ php5 -r 'print("Test World ".$argv[1]."\n\r");' Kuku
$ Test World Kuku
но на целевом устройстве ключ -r не работает Можно попробовать вот так:
$ echo '<?php print("Test World ".$argv[1]."\n\r"); ?>' | php5 
$ Test Word
сработает, но нужно добавить и передать аргумент т.е. следовать формату php5 <file> [args...] Т.е. в конце должно быть что то типа php5 &1 Kuku .. или %1 или pipe... но никак не угадаю как правильно. Подскажите пожалуйста.



Последнее исправление: DJArty (всего исправлений: 2)

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

но с xargs ... я ж должен всёравно подставить как аргумент ссылку на stdin как на файл или поток плюс добавочный аргумент. В том то и дело - как сослаться правильно на stdin в данном случае?

DJArty
() автор топика

«\n\r»

А почему не «\r\n»? Так задумано? RISC OS или что-то подобное?

sjinks ★★★
()
Ответ на: комментарий от sjinks
$ echo '<?php print("Test World ".$argv[1]."\n\r"); ?>' | php5-cgi -q -- XX
No input file specified.

"-q" просто давит HTTP headers. При этом вот так работает:

$ echo '<?php print("Test World ".$argv[1]."\n\r"); ?>' > /tmp/file | php5-cgi -q /tmp/file XX
Test World XX

Вот и задача - заменить /tmp/file на нечто не зависящее от ФС. stdin,stdout, pipe.. что там ещё..

DJArty
() автор топика
Ответ на: комментарий от sjinks

Честно скажу что не разбирался в чём разница между php и php-cgi. Но если схема

echo '....' | php5-cgi
работает и последний пример с «|» или «&&» и аргументами тоже .. то должно работать через stdin осталось только правильно описать и прилепить аргументы.

DJArty
() автор топика
Ответ на: комментарий от DJArty

Разница в том, что php — консольный клиент, а php-cgi — обработчик CGI/FastCGI, поэтому трюки, который проходят с CLI, не пройдут с CGI.

А запускать php-cgi через popen(3) и скармливать ему через полученный FILE* скрипт на его stdin не вариант?

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