执行代码以使用PHP打开灯

时间:2014-03-04 23:20:08

标签: php nginx raspberry-pi gpio

我想用PHP执行一个程序,这段代码将使用射频发射器切换我的灯。

这是通过命令行实现的:

action 63 A on

这只是一个C程序,有人写道来控制我的覆盆子pi上的GPIO引脚。所以我做了一个index.php

<?php
exec('action 63 A off');
?>

它没有做任何事情:

<?php
echo exec('action');
?>

给我程序的默认文本输出(关于要使用的参数的说明)。这告诉我PHP工作,程序位于,它可以执行。但我的灯没有打开。此外,在命令行上输入:

php index.php

按预期打开/关闭灯泡! (使用文件的第一个变种) Nginx(用户http)是否不允许打开/关闭灯泡?它被允许执行文件,至少它可以使它生成文本输出。

我也尝试过:

<?php
system('action 63 A off');
?>

还有一些像shell_exec

这样的品种

想法?

3 个答案:

答案 0 :(得分:2)

我解决了。 答案很简单,确实是用户&#34; http&#34;不允许执行C程序运行所需的布线图库。

最后我简单地说:

chmod +s action

(此set修改可执行文件(称为&#34; action&#34;)以始终以root权限运行。) ...并使用以下PHP文件(index.php)按预期运行代码:

<?php
system('action 63 A off');
?>

感谢您的帮助!

答案 1 :(得分:0)

是C程序的二进制文件,你可以传递参数吗?如果是这样,以下情况应该有效。

string exec ( string $command [, array &$output [, int &$return_var ]] )

例如

exec("controller.exe {$data}",$output);

数据是传递给可执行文件的参数,输出是来自可执行文件的任何响应。

请参阅here以获取示例

答案 2 :(得分:0)

考虑到echo exec('action')正在运行但不是exec('action 63 A off'),如果有参数,则表明命令失败。

如果是这种情况,为什么不为On创建一个shell脚本/批处理文件,为Off创建一个,并从PHP调用它们?

档案switch_on内容:

action 63 A on

档案switch_off内容:

action 63 A off

确保PHP可以访问switch_onswitch_off文件并具有执行权限。

switch_on.php

<?php
    exec('switch_on');
?>

switch_off.php

<?php
    exec('switch_off');
?>