上下文如下:
PHP5
和Apache
的Raspberry Pi并将其连接到LED显示屏。所以,显示效果很好。我在/ var / www /中安装了一个基于C的程序,这是一个例子
/var/www/
:sudo ./text-example -f fonts/5x8.bdf -r 16
( - f表示使用的字体,-r表示我的LED行数)
执行此操作时,您可以在shell中写入一些文本,并将其显示在LED上。
所以我用以下内容制作了一个简单的test.php
脚本:$res = shell_exec('sudo ./test-example -f fonts/5x8.bdf -r 16');
它也有效。我可以在STDIN
。
再远一点,现在我需要动态输入文字,所以我在proc_open()
中执行了proc.php
:
<?php
$desc = array(0=>array("pipe", "r"), 1=>array("pipe", "w"));
$cwd = '/var/www/';
$process = proc_open('php test.php', $desc, $pipes, $cwd, NULL);
if (is_resource($process)) {
fwrite($pipes[0], 'hello');
fclose($pipes[0]);
}
?>
所以,现在我在shell中运行:php proc.php
。一旦我用管道定义$desc
,程序就会执行,然后停止。 LED显示屏没有显示任何内容。如果我删除$desc
变量并删除管道内容(fwrite
,fclose
),我可以在shell中输入文本,它将正确执行,就好像它是test.php
一样。我不明白为什么它不会让我STDIN
与fwrite
以及为什么php会被这些管道中断。