当前位置: > Linux服务器 > Lighttpd >

Arm linux下lighttpd+PHP通过shell_exe,exec等调用系统指令

时间:2014-07-10 00:41来源:linux.it.net.cn 作者:IT网

话说本此任务是在嵌入终端里跑web服务,容器自然选择了轻量级的lighttpd+php方案。

本身WEB应用程序都可以调用系统的指令的,通过WEB可以很方便的管理终端,人机交互,当然大多情况下是为维护人员服务的。

在ubuntu上的编译使用都很简单。但把交叉编译后的程序放到终端上后,用php测试exec等系统调用函数怎样也不成功,页面始终是500内部错误。

除了系统调用函数鞥,其他一切正常。

查看lighttpd日志,主要如下2行错误报告:

1970-01-03 08:26:53: (mod_fastcgi.c.2543) unexpected end-of-file (perhaps the fastcgi process died): pid: 9169 socket: unix:/mnt/data/lighttpd-1.4.31/sockets/php-fastcgi.socket-0-0 
1970-01-03 08:26:53: (mod_fastcgi.c.3329) response not received, request sent: 823 on socket: unix:/mnt/data/lighttpd-1.4.31/sockets/php-fastcgi.socket-0-0 for /test.php?, closing connection
 
开始抓狂,重新编译php,lighttpd,以为版本问题,对php.ini文件配置各种更改测试,lighttpd的各种conf文件看了不下N 遍,始终不能成功。
其实一开始就怀疑是权限的问题,但毕竟对系统不熟,错误报告也不明确,或者说不够自信?
 
各种搜索引擎上查找问题,最后发现者个错误报告还是蛮多的,但发生的原因有多种,不只是在调用exec等情况下发生的。
 
其实最初就试过用root运行lighttpd,提示“ I will not set gid to 0 ”,当时没在意。憋了2天后其他尝试都失败后,再次开始考虑权限问题。尝试使用root启动lighttpd依然“ I will not set gid to 0 ”,最后发现源码Server.c中屏蔽了root运行权限,于是去掉屏蔽,重新编译,测试<?php echo exec("pwd");?>成功!!
(责任编辑:IT)
------分隔线----------------------------