最近为南方基地的平台编写监控接口,采用BS构架,其中有一个监测虚拟机是否宕机的功能。
过程为:监控机发出访问请求-->接口分析请求-->启动socket检测目标虚拟机是否宕机。
因为通过ICMP协议检测,所以用了 SOCK_RAW 的socket类型。
服务器使用apache + php + mysql,发现程序出错,提示说没有权限创建socket。后来查资源得知,此类socket需要root权限或者以cgi方式跑php结合用 setuid() 才能创建socket。
解决方法:改用nginx+php-cgi+mysql解决。
在编译php的时候,要做以下修改才能用root用户启动服务。
1.找到php的源代码$src_path/sapi/cgi/fpm/fpm_unix.c (版本不一样,最好是通过 find $src_path -name fpm_unix.c)
2.在文件顶部增加一个宏定义:#define I_REALLY_WANT_ROOT_PHP
3.重新 configure make make install
4.php-fpm.conf 将user、group都修改成root
BS模式中用php创建socket 无权限的解决办法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
全方位深度剖析PHP7底层源码
wy53780
2020-04-23 15:39:33
Redis主从复制以及主从复制原理
LoyaltyLu
2019-02-24 23:12:38
nginx+php执行请求的工作原理
xavier
2019-02-24 15:52:41
配置Nginx支持php,出现No input file specified错误的解决方法
lvqingpu
2019-02-24 13:15:35
如果同事暗中伤害你,应该怎么办?
這個饅頭有餡
2019-02-24 13:59:08
职场中,抱怨越多的员工,越被领导瞧不起!
這個饅頭有餡
2019-02-24 13:59:08
老程序员被裁,应届生却能月薪 1.3 万?这你能忍?
前端高達
2019-02-24 13:48:04
遇到到处蹭吃却从不请客吃饭的主怎么办?
樑軍年
2019-02-24 13:26:35
Linux基本操作命令
wbzjacky
2019-02-24 13:12:38
高标准机房综合配线安装
wbzjacky
2019-02-24 13:12:38
IPsec ***实验
wbzjacky
2019-02-24 13:12:37
真实的模拟***综合实验
wbzjacky
2019-02-24 13:12:37