让PHP以root权限执行系统命令2

1 问题描述

前台功能中,点击按钮后,需要后台执行脚本,更新数据。但是在页面点击后,数据没有更新。


2 问题排查

(1) 程序中使用shell_exec();执行脚本命令。确认函数是否禁用,在php的配置中,修改禁用函数配置,PHP默认禁用shell_exec()、exec()等函数

(2) 修改禁用函数后,脚本执行仍然没有反应。排查文件权限,发现web程序的执行者是www用户,脚本文件的权限是root用户,查看php的运行着身份是www,修改php的运行用户身份。问题解决


3 修改PHP配置

// 修改PHP运行用户
// 1.打开配置文件,然后将用户改为root用户
# vi /www/server/php/74/etc/php-fpm.conf
listen.owner = root
listen.group = root
user = root
group = root // 2.重启PHP
# php-fpm -R 3.重启后查看php的运行者身份
ps aux | grep php
[root@localhost etc]# ps -aux | grep php-fpm
root 13570 0.0 0.1 249732 7452 ? Ss 23:26 0:00 php-fpm: master process (/www/server/php/74/etc/php-fpm.conf)
root 13571 0.2 0.4 256400 18244 ? S 23:26 0:01 php-fpm: pool www
root 13572 0.0 0.1 249732 6576 ? S 23:26 0:00 php-fpm: pool www
root 13573 0.0 0.1 249732 6576 ? S 23:26 0:00 php-fpm: pool www
root 13574 0.0 0.1 249732 6576 ? S 23:26 0:00 php-fpm: pool www
root 13575 0.0 0.1 249732 6576 ? S 23:26 0:00 php-fpm: pool www
root 13587 0.0 0.1 249732 6576 ? S 23:26 0:00 php-fpm: pool www
root 14087 0.0 0.0 112812 972 pts/1 S+ 23:33 0:00 grep --color=auto php-fpm

注意:重启之后,可能会报错,若报错,则执行如下的步骤


4 修改nginx服务器的nginx-conf文件

# 修改内容如下,也就是说php-fpm的用户和nginx的用户一致
user www www;


5 关闭php-fpm,然后重启

# 检查运行中的php-fpm进程
ps aux |grep php-fpm

# 把所有运行的php-fpm进程杀掉
killall php-fpm

# 重启php-fpm,若运行如下命令失败,则运行php-fpm -R命令
重启命令1:service php-fpm restart 重启命令2:php-fpm -R // 常用





相关推荐

  • 获取指定目录下的所有图片信息

    1 获取指定目录下的所有图片信息// 获取指定目录下的所有图片信息 public function getImagesInfo($directory) { $images = []; // 创建递归目录迭代器 $iterator = new \RecursiveIteratorIterator( new \RecursiveDirectoryIterator($directory, \RecursiveDirectoryIterator::SKIP_DOTS), \RecursiveIteratorIterator::LEAVES_ONLY ); // 遍历目录中的每个文件 foreach (

  • Thinkphp各版本的PHP要求

    ThinkPHP 8.0:运行环境要求PHP8.0+,兼容PHP8.3ThinkPHP 6.1:运行环境要求PHP7.2+,兼容PHP8.1ThinkPHP 6.0:运行环境要求PHP7.2+,兼容PHP8.1ThinkPHP 5.1:运行环境要求PHP5.6+,兼容PHP8.0ThinkPHP 5.0:运行环境要求PHP5.4+,兼容PHP7.3

  • Thinkphp5.1路径常量

    1 配置文件位置根目录/config/template.php2 配置文件内容<?php// +----------------------------------------------------------------------// | ThinkPHP [ WE CAN DO IT JUST THINK ]// +----------------------------------------------------------------------// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reser

  • Thinkphp5.0路径常量

    1 配置文件位置根目录/application/模块名/config.php2 配置文件内容<?php//配置文件return [ // 后台视图输出字符串内容替换 'view_replace_str' => [ '__PUBLIC__' => '/', '__STATIC__' => '/static', '__CONSOLE__' => '/static/console', '__CONSOLE_CSS__' => '/static/console/css', '__CONSOLE_IMAGES__' => '/static/console/ima

  • wp站点防止别人进行DDOS攻击

    1 简介wp站点防止别人进行DDOS攻击。2 配置位置位置:根目录/wp-config.php3 配置内容在【根目录/wp-config.php】文件的开头添加如下代码:if(strpos($_SERVER['REQUEST_URI'], 'xmlrpc.php') !== false){ $protocol = $_SERVER['SERVER_PROTOCOL'] ?? ''; if(!in_array($protocol, ['HTTP/1.1', 'HTTP/2', 'HTTP/2.0', 'HTTP/3'], true)){ $protocol = 'HTTP/1.0'; } hea

  • 只读属性

    1 只读属性简介只读属性的声明方式类似于普通属性,但需要使用 readonly 关键字。2 只读属性例子class Point { public readonly float $x; public readonly float $y; public function __construct(float $x, float $y) { $this->x = $x; $this->y = $y; }}$point = new Point(3.5, 2.8);echo $point->x; // 输出: 3.5echo $point->y; // 输出: 2.8// 下面的尝