很多站长朋友们都不太清楚禁止execphp,今天小编就来给大家整理禁止execphp,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 LINUX+NGINX下的PHP shell_exec()函数执行linux命令 2019-08-08 2、 php exec函数不能执行...急.............. 3、 如何配置服务器的php,使得能成功运行exec函数? 4、 6.如何禁止php服务程序中不安全的功能? 5、 php如何定义一个show()函数 6、 php exec() LINUX+NGINX下的PHP shell_exec()函数执行linux命令 2019-08-08LINUX+NGINX下的PHP shell_exec()函数执行linux命令
环境说明
手头有一台linux的测试服务器,最近因为业务需要,需要通过php访问另一台服务器去执行某些命令。
由于另一台服务器已经对这台服务器开了私钥,所以在终端上是可以直接执行命令而不需要输入密码的。
问题
PHP无法使用exec命令,没有任何返回值。
解决途径
1.php.ini的配置有问题。
由于php是7.0以上的版本,取消了安全模式,所以考虑PHP.ini文件配置。
打开php配置文件,里面有一行disabel_function的值,此处记录了禁止运行的函数,在里面讲exec和shell_exec,system等函数删除。
2.权限问题
修改以后PHP可以运行部分命令了,但是部分外部程序和命令仍然不能运行。使用sudo返回失败。
于是运行“whoami”查看,环境下php-frm的运行角色是www。
于是修改sudoers文件。
vi /etc/sudoers
将www添加到
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
下面:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
www ALL=(ALL) NOPASSWD:ALL
然后找到Default requiretty这一行,把他注释掉
# Default requiretty
ps:意思就是sudo默认需要tty终端,注释掉就可以在后台执行了.
重启nginx和php-fpm
service nginx restart
service php-fpm restart
这样,PHP就可以在需要执行外部命令的时候使用sudo利用root身份执行命令,而不会报错或者执行失败了!
php exec函数不能执行...急..............。。。你看exec的函数返回值是什么!!!
exec等只会有返回值,而不会弹出窗口。you know?
你可以指定输出和返回值的,看看手册吧。。它有三个参数呢
output
If the output argument is present, then the specified array will be filled with every line of output from the command. Trailing whitespace, such as \n, is not included in this array. Note that if the array already contains some elements, exec() will append to the end of the array. If you do not want the function to append elements, call unset() on the array before passing it to exec().
return_var
If the return_var argument is present along with the output argument, then the return status of the executed command will be written to this variable.
返回值
The last line from the result of the command. If you need to execute a command and have all the data from the command passed directly back without any interference, use the passthru() function.
To get the output of the executed command, be sure to set and use the output parameter.
如何配置服务器的php,使得能成功运行exec函数?如果是命令行使用的话,直接运行即可,如果是apache使用的话,需要重启apache,如果是nginx配合使用的话,需要重启php-fpm,exec函数执行命令并不需要安全目录,只要有执行权限就可以执行。
6.如何禁止php服务程序中不安全的功能?为了使php程序更安全,很多站长都选择了禁用一些比较敏感的函数,那影响php安全的函数到底有哪些呢,下面我们列出了一些:
1、phpinfo()
功能描述:输出 PHP 环境信息以及相关的模块、WEB 环境等信息。
危险等级:中
2、passthru()
功能描述:允许执行一个外部程序并回显输出,类似于 exec()。
危险等级:高
3、exec()
功能描述:允许执行一个外部程序(如 UNIX Shell 或 CMD 命令等)。
危险等级:高
4、system()
功能描述:允许执行一个外部程序并回显输出,类似于 passthru()。
危险等级:高
5、chroot()
功能描述:可改变当前 PHP 进程的工作根目录,仅当系统支持 CLI 模式
PHP 时才能工作,且该函数不适用于 Windows 系统。
危险等级:高
6、scandir()
功能描述:列出指定路径中的文件和目录。
危险等级:中
7、chgrp()
功能描述:改变文件或目录所属的用户组。
危险等级:高
8、chown()
功能描述:改变文件或目录的所有者。
危险等级:高
9、shell_exec()
功能描述:通过 Shell 执行命令,并将执行结果作为字符串返回。
危险等级:高
10、proc_open()
功能描述:执行一个命令并打开文件指针用于读取以及写入。
危险等级:高
11、proc_get_status()
功能描述:获取使用 proc_open() 所打开进程的信息。
危险等级:高
12、error_log()
功能描述:将错误信息发送到指定位置(文件)。
安全备注:在某些版本的 PHP 中,可使用 error_log() 绕过 PHP safe mode,
执行任意命令。
危险等级:低
13、ini_alter()
功能描述:是 ini_set() 函数的一个别名函数,功能与 ini_set() 相同。
具体参见 ini_set()。
危险等级:高
14、ini_set()
功能描述:可用于修改、设置 PHP 环境配置参数。
危险等级:高
15、ini_restore()
功能描述:可用于恢复 PHP 环境配置参数到其初始值。
危险等级:高
16、dl()
功能描述:在 PHP 进行运行过程当中(而非启动时)加载一个 PHP 外部模块。
危险等级:高
17、pfsockopen()
功能描述:建立一个 Internet 或 UNIX 域的 socket 持久连接。
危险等级:高
18、syslog()
功能描述:可调用 UNIX 系统的系统层 syslog() 函数。
危险等级:中
19、readlink()
功能描述:返回符号连接指向的目标文件内容。
危险等级:中
20、symlink()
功能描述:在 UNIX 系统中建立一个符号链接。
危险等级:高
php如何定义一个show()函数函数四要素: 返回类型 函数名 参数列表 函数体
function show() { } 最简单的函数定义方式
function Show() {echo "hello";} Show(); 有参数的函数
function show($a) {echo $a;} show("hello"); 有返回值的函数
function show(){return "aaaaa";} echo show(); 有默认值的函数
function show($a="hello"){echo $a;}show("ceshi"); 可变参数的函数
function show(){//var_dump(func_num_args());
func_get_args() 获取参数列表
func_num_args() 获取参数的个数
$attr = func_get_args();
$sum = 0;
for($i=0;$i<count($attr);$i++)
{
$sum = $sum+$attr[$i];
}
return $sum;
} echo show(1,2,3,4);
常用函数
echo rand(0,10); 生成随机数
日期时间
echo time(); 取当前时间,返回Unix时间戳
echo date("Y-m-d H:i:s"); 格式化日期时间
echo strtotime("2016-3-4 12:09:10"); 将字符串转化为时间戳
字符串函数
$a = "hello|world|ni|hao";
echo strlen($a); //取字符串的长度
echo strcmp("Hello",$a); //比较两个字符串,相等返回0,区分大小写
echo strcasecmp("Hello",$a); //比较两个字符串,相等返回0,不区分大小写
echo strtolower("Hello"); //将字符串转小写
echo strtoupper("hello"); //将字符串转大写
var_dump(explode("|",$a)); //拆分字符串,返回数组
$attr = array("aa","bb","cc","dd");
echo implode("%",$attr); //拼接字符串
echo substr_replace($a,"***",0,5); //替换指定位置的字符串
第一个参数是要替换的字符串
第二个参数是替换的字符串
第三个参数是开始位置
第四个参数是替换长度
echo str_replace("|","?",$a); //查找替换
第一个参数是要查找的字符串
第二个参数是要替换的字符串
第三个参数是被操作的字符串
$s = "2016年元旦放假时间安排表";
echo str_replace("元旦","<mark>元旦</mark>",$s);
$str2 = substr($str,9,4);
echo "从第9个字符开始取4个字符:".$str2.
echo substr($a,0,5); //截取指定位置的字符
$s = ""; for($i=0;$i<10;$i++) {$s = $s.$i.",";}
$s = substr($s,0,strlen($s)-1);
echo $s; 关于字符串定义
$a = "test"; $s = "hello{$a}world"; $str = 'helloworld'; echo $str;//区别:
1.单引号不解析转义字符,内容会原样输出
2.单引号不解析变量
$z1 = "p001"; $z2 = "张三"; $z3 = "男"; $z4 = "2000-1-2"; $z5 = "0904";
$sql = "insert into info values('".$z1."','".$z2."','".$z3."','".$z4."','".$z5."')";或
$sql = "insert into info values('{$z1}','{$z2}','{$z3}','{$z4}','{$z5}')";
echo $sql;*/
$s = <<<A
<span style="color:red">你好</span>
A; 后者A必须是在一行顶格
echo $s;
转载于:
原文链接:
点击阅读全文
打开CSDN APP,看更多技术内容
PHP函数参考手册大全
17. 函数 18. 类与对象(PHP 4) 19. 类与对象(PHP 5) 20. 异常处理 21. 引用的解释 IV. 安全 22. 简介 23. 总则 24. 以 CGI 模式安装时 25. 以 Apache 模块安装时 26. 文件系统安全 27. 数据库安全 28. 错误报告 ...
07_php函数
global关键字的使用 在函数里面的变量之前加上global,相当于函数外面的a就是函数里面的a就是函数里面的a,都变成了同一个变量 $a=10; function show(){ global $a; $a++; echo $a; } show(); //11 echo $a; //11 ?>
继续访问
PHP:变量和函数2
** ** ** ** ** ** ** ** **
继续访问
PHP【函数】
目录:【PHP函数】、【PHP数组】 一、PHP常用函数(和JS一样)函数的四要素:①返回类型②函数名③参数类型④函数体因为PHP是弱类型语言,所以可以不用写返回类型,但是其他三个要素都是必须要写的。 1、最简单的函数写法 function show() { echo "hello"; } show(); 2、有返回值的函数就是在函...
继续访问
php函数方法,基于PHP函数的操作方法
如下所示://简单函数function show(){echo "hello";}show();//有参数的函数function show($a){echo "$a";}show("world");//有返回值的函数function show(){return "小V,你好!";}echo show();function show($a,$b){return $a+$b;}echo show(10...
继续访问
PHP函数的定义
函数就是功能。封装一段用于完成特定功能的代码。调用一个函数就是在调用一个功能。 内置函数: PHP函数中有一些内置函数,这些函数是不能随便进行更改的; strtoupper() 和 strtolower()是两个内置的函数,用于对字符串进行大小写转换。 $str = 'ABcd'; $upper = strtoupper($str); // 调用strtoupper()函数将$str转换成大写 ...
继续访问
html按钮调用php函数,如何在html按钮上执行php函数点击
您的按钮是HTML,而您的功能是PHP。他们看起来像在一起,因为他们在同一个文件中,但他们不在一起。 PHP仅在服务器上存在。 HTML仅适用于客户端(浏览器)。当你在浏览器上看到按钮时,PHP就消失了,你只有HTML。要创建一个HTML按钮来调用一个PHP函数,您必须将您的函数移动到一个PHP文件,然后让您的按钮使用Ajax调用它。例如:bb1.html:包含使用Ajax调用PHP函数的按钮。f...
继续访问
php调用方式,php 函数调用的几种方式
// 最常见的函数调用 --- 1function userFunction1($param1, $param2){echo 'UserFunction1: Param1 : ',$param1,' , Param2 : ',$param2,'';}userFunction1('Hello','world');// 最常见的函数调用 --- 2$userFunction2 = function($...
继续访问
在上传文件中常用的PHP函数
注:做完upload上传漏洞后,收集了一些常用的PHP函数 1.
继续访问
热门推荐 php中in array函数_PHP函数in_array()使用详解
PHP有一个系统函数is_array()可以判断一个值是否在数组中。语法如下:in_array(value,array,type)return boolen参数说明:value :要搜索的值array : 被搜索的数组type : 类型,true全等 ,false非全等(默认)示例一:普通使用代码:$str = 1;$arr = array(1,3,5,7,9);$boolvalue = in_a...
继续访问
PHP函数(function)
函数基础 函数的定义: 形式: function 函数名 ( 【$形参1】 【,$形参2】 【,.... 】 ){ //函数体。。。。。。 } 说明: 1,定义时使用的形参,其实就是一个变量——只能在该函数内部使用的变量 2,形参作为变量,其名字是“自己定义”——自然应该遵循命名规范; 函数的调用: 函数名($实参1, $实参2, ..... ); 说明: 1,实参应该...
继续访问
PHP 函数调用
函数调用 函数调用时,实参要按照顺序给形参。 函数调用时,互相独立,默认没有联系。 执行完毕后,返回调用的位置,继续向下执行。 案例 <?php function A(){ echo "This is A fun!<hr />"; } function B(){ echo "Fun B begining<hr />"; A(); echo "Fun B end...
继续访问
PHP 函数 数组引用传参数
<?php function addElement($arr2,$school2) //数组是拷贝传值,数组作形参需要在前面加""符号,表示引用传参数。也可以在函数调用时,在实参前加""符号。 { $arr2[] = $school2; } $arr = array("张三","男",24); $school = "北京理工大学"; addElement($arr,$school)
继续访问
php round函数
php round函数用于对对浮点数进行四舍五入,其语法是round(x,prec),参数x可选,指规定要舍入的数字;prec可选,指规定小数点后的位数。 php round函数怎么用? 定义和用法 round() 函数对浮点数进行四舍五入。 语法 round(x,prec) 参数 x 可选。规定要舍入的数字。 prec 可选。规定小数点后的位数。 说明 返回将 x 根据指定精度 prec (十进...
继续访问
vscode跳转到php函数定义处
转:
继续访问
php函数中static的使用
php中static的定义语句只会被执行一次,但是它的值会被函数记住,直到程序终止 举个栗子: <?php function test() { //这个语句只会在该程序运行的第一次调用生效,但是这个值在函数执行结束后会被该函数记住, //也就是说下次执行到这个函数的,$a是已经存在的且值为上次运行后的值 static $a = 1; //只运行一次 ...
继续访问
最新发布 php的exec函数
新建一个php文件 输入命令执行 发现异常这是因为在php的配置文件中禁止了exec函数的运行,因此需要修改配置文件,使用下列代码找到配置文件 进入配置文件,将exec函数删除 重启php-fpm 然后发现可以正常运行 exec有三个参数,第二个和第三个参数不是必需的。第一个参数是执行的命令,第二个参数存储命令执行的输出,第三个参数返回执行的状态。...
继续访问
前端调用PHP函数的方式
html_entity_decode()<div class="rxzcB fl">{$service.introduction|html_entity_decode}</div>其中的service.introduction是从后端传过来的数据,此处的数据是html格式的,我们在前端希望看到通过浏览器解析过的文档格式,就可以调用PHP函数htmlentitydecode。比如,会将service.
继续访问
php函数-list函数
list()函数作用:将数组的元素变成变量使用 - 1.等号左边是list()函数,右边是索引数组(下标连续的,按0开始); - 2.数组中有几个元素,则list()有几个参数(参数必须是变量不能是值,而且变量是自定义的变量),跟数组的值是一一对应关系; - 3.在list()函数的参数中,空项也代表元素list($a, $b, $c) = ['aa', 'bb', 'cc'];
继续访问
php
php exec()php的exec函数用法如下:
exec — 执行一个外部程序
string exec( string $command[, array $output[, int $return_var]])
exec() 执行command 参数所指定的命令。
command:要执行的命令。
output:如果提供了 output 参数,那么会用命令执行的输出填充此数组,每行输出填充数组中的一个元素。数组中的数据不包含行尾的空白字符,例如 \n 字符
请注意,如果数组中已经包含了部分元素,exec()函数会在数组末尾追加内容。
如果不想在数组末尾进行追加,请在传入 exec() 函数之前对数组使用 unset() 函数进行重置。
return_var:如果同时提供output和return_var 参数,命令执行后的返回状态会被写入到此变量。
返回值:
命令执行结果的最后一行内容。
如果需要获取未经处理的全部输出数据,请使用 passthru() 函数。
如果想要获取命令的输出内容,请确保使用 output 参数。
关于禁止execphp的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。