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

8 篇文章 0 订阅
1 篇文章 0 订阅

话说本此任务是在嵌入终端里跑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");?>成功!!! 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
phpLight 2013.2.20下载 phpLight 2013 是网上首套LightTPD+PHP集成包, 集成最新Lighttpd+PHP+MySQL+SQL-Front+Zend Guard Loader+XCache。 纯绿色,安装后无需再配置。支持系统服务和非服务两种启动方式,自由切换。 一次性安装无需再安装,即使重做系统后亦可使用,直接点启动即可。 小巧简易迷你只有14M,非常方便的搭建网站服务器。 有专门开发的控制面板进行控制程序的启停。 phpLight 2013 包括以下组件: PHP 5.3.21  web编程语言 Lighttpd 1.4.30  服务器 MySQL 5.5.30  数据库 SQL-Front 5.1.4.16  MySQL管理器 Zend Guard Loader 5.5.0  PHP优化器 XCache 3.0.1    PHP缓存器/优化器 eAccelerator 1.0  PHP缓存加速器 以上均为当前最新版本。 『特别注意』MySQL数据库用户名:root,密码root 1. 为了减少出错安装路径不得有空格和汉字,如有防火墙开启,会提示是否信任httpd、mysqld运行,请选择全部允许。 2. 此为Lighttpd+PHP方案,需要apache+php方案的请到www.phpStudy.net下载phpStudy,Nginx+php方案下载phpfind。 3. 重装系统后或相关服务丢失时,只需要点一下『运行模式-应用』即可,更改路径自动启动。 4. 可通过菜单『卸载相关服务』进行卸载相关服务。 5. 在『启动』、『停止』、『重启』三个启停按钮上右键可以有选择地进行启停,左键将控制全部的启停。 6. 菜单『phpStudy 设置』可以进行php,apche,mysql的相关设置。菜单『站点域名设置』可以进行站点及域名的添加。 7. 本程序分为安装版和非安装版,无论是安装还是免安装,最后的效果完全一致。 8. 鉴于phpMyAdmin的导入导出功能太弱,并且大文件SQL还容量出错,故将phpMyAdmin换成SQL-Front。 系统服务和非服务启动的区别: 系统服务启动:开机就会启动,适合经常使用或做服务器,无需手工启动,服务会随开机而启动,好处程序运行稳定。 非服务启动:需要手动启动一下,适合偶尔经常使用一下。在不使用的情况不会启动相关进程,从而节省电脑的资源。
交叉编译 lighttpdphp_fpm 需要进行以下步骤: 1. 安装交叉编译工具链:根据目标平台选择合适的交叉编译工具链,例如 arm-linux-gnueabi-gcc 或者 aarch64-linux-gnu-gcc 等,并将其添加到 PATH 环境变量中。 2. 下载 lighttpdphp 源码:从官网下载 lighttpdphp 的源码包,例如 lighttpd-1.4.54.tar.gz 和 php-7.4.16.tar.gz。 3. 解压源码包:使用 tar 命令解压源码包,例如: ``` tar zxvf lighttpd-1.4.54.tar.gz tar zxvf php-7.4.16.tar.gz ``` 4. 进入 lighttpd 源码目录:进入解压后的 lighttpd 源码目录,例如: ``` cd lighttpd-1.4.54 ``` 5. 配置编译选项:使用交叉编译工具链配置编译选项,例如: ``` ./configure --host=arm-linux-gnueabi ``` 6. 编译 lighttpd:使用 make 命令编译 lighttpd,例如: ``` make ``` 7. 进入 php 源码目录:返回上级目录,进入解压后的 php 源码目录,例如: ``` cd ../php-7.4.16 ``` 8. 配置编译选项:使用交叉编译工具链配置编译选项,例如: ``` ./configure --host=arm-linux-gnueabi --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-openssl --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data --disable-short-tags --disable-phpdbg ``` 其中,--with-pdo-mysql 和 --with-mysqli 用于支持 MySQL 数据库,--with-openssl 用于支持 SSL/TLS 加密,--enable-fpm 和 --with-fpm-user、--with-fpm-group 用于编译 php_fpm。 9. 编译 php_fpm:使用 make 命令编译 php_fpm,例如: ``` make ``` 10. 将编译完成的 lighttpdphp_fpm 拷贝到目标平台上。 以上就是交叉编译 lighttpdphp_fpm 的步骤,需要注意的是,编译选项需要根据实际情况进行调整,例如根据目标平台选择合适的交叉编译工具链、选择需要支持的模块等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值