首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过PHP执行Openwrt UCI命令

通过PHP执行Openwrt UCI命令
EN

Stack Overflow用户
提问于 2015-08-17 06:43:28
回答 3查看 1.4K关注 0票数 2

我正在使用PHP为openwrt开发简单(非常简单)的前端。为此,我需要调用许多openwrt (Unified )。接口)通过PHP、shell_exec()或system()函数执行命令。我在终端上尝试过的所有UCI命令都运行得非常好。但是,一旦我完成了上述功能,它们就根本无法工作。

作为一个示例,我运行了两个在终端中运行良好的命令

代码语言:javascript
复制
uci set wireless.@wifi-iface[0].ssid=test
uci commit

但是,当我通过PHP运行它们时,什么都不会发生。他们根本不起作用。I创建.sh文件并保存以上两行,并使用PHP运行该文件,但再次!!结果是一样的。但是当我通过终端执行.sh文件时,它可以工作!!

为了进行测试,我将两个文件的权限设置为777。但这没什么用。是否还需要通过PHP运行shell命令,比如对PHP或Apache的根访问?我是新手,如果有人能帮上忙,我会很感激

我的apache error_log

代码语言:javascript
复制
[Wed Aug 19 08:26:53 2015] [error] [client 192.168.2.117] uci
[Wed Aug 19 08:26:53 2015] [error] [client 192.168.2.117] : 
[Wed Aug 19 08:26:53 2015] [error] [client 192.168.2.117] I/O error
[Wed Aug 19 08:26:53 2015] [error] [client 192.168.2.117]

我使用apache作为web服务器,openwrt混沌平静器15.05-rc3作为我在Raspberry pi 2之上的基本固件。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-08-25 07:50:01

我设法用uhttpd web服务器而不是Apache来解决我的问题。Apache不知怎么没有足够的权限直接执行UCI命令。uhttpd openwrt中的默认web服务器可以直接执行此命令。

票数 1
EN

Stack Overflow用户

发布于 2017-01-24 14:22:26

我试图找出同样的问题,到目前为止,我的结论是使用根权限运行php。我知道这不安全,但至少起作用了。下面是一行,从/etc/init.d/php5-fpm运行具有根权限的php:

service_start $PROG -R -y $CONFIG -g $SERVICE_PID_FILE

这里的关键标志是:

-R,-允许以根方式运行

允许池以root形式运行(默认情况下禁用)

票数 1
EN

Stack Overflow用户

发布于 2020-10-03 09:52:03

两个答案都是正确的。sameera提到的事实是,uhttpd具有在LEDE或OPENWRT上运行的特殊权限(默认情况下),但是Anton Glukhov编写的内容也是正确的,它允许我作为根用户运行,但为了避免错误而受到限制。我无法像运行uhttpd那样运行脚本(),但是php运行正常,并且在作为根用户运行时没有任何but。我想这是Openwrt默认情况下在Nginx上发出的文件权限问题。我的解决方案是让uhttpd在不同的端口上运行,并在Nginx中以非根的形式运行所有的权限和权限的程序。在我的例子中,安全性不是问题,它的脱机服务器。

代码语言:javascript
复制
service_start $PROG -R -y $CONFIG -g $SERVICE_PID_FILE

工作,在我的示例中,编辑在/etc/init.d/php7-fpm中添加/etc/init.d/php7-fpm标志。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32044209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档