首页 > 后端开发 > 正文

如何让php执行shell

2024-09-12 16:14:47 | 我爱编程网

今天我爱编程网小编整理了如何让php执行shell相关信息,希望在这方面能够更好帮助到大家。

本文目录一览:

如何让php执行shell

菜鸟求助:PHP中调用系统命令为何有些命令总是失败

PHP执行系统命令(简介及方法)
在PHP中调用外部命令,可以用如下三种方法来实现:
方法一:用PHP提供的专门函数(四个):
PHP提供4个专门的执行外部命令的函数:exec(), system(), passthru(), shell_exec()
1)exec()
原型: string exec ( string $command [, array &$output [, int &$return_var ]] )
说明: exec执行系统外部命令时不会输出结果,而是返回结果的最后一行。如果想得到结果,可以使用第二个参数,让其输出到指定的数组。此数组一个记录代表输出的一行。即如果输出结果有20行,则这个数组就有20条记录,所以如果需要反复输出调用不同系统外部命令的结果,最好在输出每一条系统外部命令结果时清空这个数组unset($output),以防混乱。第三个参数用来取得命令执行的状态码,通常执行成功都是返回0。
<?php
exec("dir",$output);
print_r($output);
?>
2)system()
原型: string system ( string $command [, int &$return_var ] )
说明: system和exec的区别在于,system在执行系统外部命令时,直接将结果输出到游览器,如果执行命令成功则返回true,否则返回false。第二个参数与exec第三个参数含义一样。
<?php
system("pwd");
?>
3)passthru()
原型: void passthru ( string $command [, int &$return_var ] )
说明: passthru与system的区别,passthru直接将结果输出到游览器,不返回任何值,且其可以输出二进制,比如图像数据。第二个参数可选,是状态码。
<?php
header("Content-type:image/gif");
passthru("/usr/bin/ppm2tiff /usr/share/tk8.4/demos/images/teapot.ppm");
?>
4)shell_exec()
原型: string shell_exec ( string $cmd )
说明: 直接执行命令$cmd
<?php
$output = shell_exec('ls -lart');
echo "<pre>$output</pre>";
?>
方法二:反撇号
原型: 反撇号`(和~在同一个键)执行系统外部命令
说明: 在使用这种方法执行系统外部命令时,要确保shell_exec函数可用,否则是无法使用这种反撇号执行系统外部命令的。
<?php
echo `dir`;
?>
方法三:用popen()函数打开进程
原型: resource popen ( string $command , string $mode )
说明: 能够和命令进行交互。之前介绍的方法只能简单地执行命令,却不能与命令交互。有时须向命令输入一些东西,如在增加系统用户时,要调用su来把当前用户换到root用户,而su命令必须要在命令行上输入root的密码。这种情况下,用之前提到的方法显然是不行的。
popen( )函数打开一个进程管道来执行给定的命令,返回一个文件句柄,可以对它读和写。返回值和fopen()函数一样,返回一个文件指针。除非使用的是单一的模式打开(读or写),否则必须使用pclose()函数关闭。该指针可以被fgets(),fgetss(),fwrite()调用。出错时,返回FALSE。
<?php
error_reporting(E_ALL);
/* Add redirection so we can get stderr. */
$handle = popen('/path/to/executable 2>&1', 'r');
echo "'$handle'; " . gettype($handle) . "\n";
$read = fread($handle, 2096);
echo $read;
pclose($handle);
?>
要考虑两个问题:安全性和超时
1)安全性
由于PHP基本是用于WEB程序开发的,所以安全性成了人们考虑的一个重要方面 。于是PHP的设计者们给PHP加了一个门:安全模式。如果运行在安全模式下,那么PHP脚本中将受 到如下四个方面的限制:
执行外部命令
在打开文件时有些限制
连接MySQL数据库
基于HTTP的认证
在安全模式下,只有在特定目录中的外部程序才可以被执行,对其它程序的调用将被拒绝。这个目录可以在PhP.ini 文件中用safe_mode_exec_dir指令,或在编译PHP是加上--with-exec-dir选项来指定。
当你使用这些函数来执行系统命令时,可以使用escapeshellcmd()和escapeshellarg()函数阻止用户恶意在系统上执行命令,escapeshellcmd()针对的是执行的系统命令,而escapeshellarg()针对的是执行系统命令的参数。这两个参数有点类似addslashes()的功能。
2)超时
当执行命令的返回结果非常庞大时,可以需要考虑将返回结果输出至其他文件,再另行读取文件,这样可以显著提高程序执行的效率。
如果要执行的命令要花费很长的时间,那么应该把这个命令放到系统的后台去运行。但在默认情况下,象system()等函数要等到这个命令运行完才返回(实际上是在等命令的输出结果),这肯定会引起PHP脚本的超时。解决的办法是把命令的输出重定向到另外一个文件或流中,如:
<?php
system("/usr/local/bin/order_proc > /tmp/abc ");
?>
但我调用的DOS命令需要几分钟的时间,而且为了批处理不能简单的把结果写入文件了事,要顺序执行以下的程序
PHP设置了调用系统命令的时间限制,如果调用命令超时,虽然这个命令还是会被执行完,但PHP没有得到返回值,被终止了(最可恨的是,不显示任何错误)
修改php.ini并重启Apache以允许系统命令运行更长的时间
max_execution_time = 600
我的程序是后台运行的,逻辑OK就成了

如何让php执行shell

如何让php执行shell

php给我们提供了system(),exec(),passthru()这三个函数来调用外部的命令.
虽然这三个命令都能执行linux系统的shell命令,但是其实他们是有区别的:
system() 输出并返回最后一行shell结果。
exec() 不输出结果,返回最后一行shell结果,所有结果可以保存到一个返回的数组里面。
passthru() 只调用命令,把命令的运行结果原样地直接输出到标准输出设备上。
相同点:都可以获得命令执行的状态码

例子:system("/usr/local/bin/webalizer/webalizer");

如何让php执行shell

php代码怎么运行?

我爱编程网(https://www.52biancheng.com)小编还为大家带来php代码怎么运行?的相关内容。

PHP怎么运行EXEC文件?

在PHP中调用外部命令,可以用如下三种方法来实现:

1、用PHP提供的专门函数

(1)PHP提供共了3个专门的执行外部命令的函数:system(),exec(),passthru()。

(2)system()原型:string?system(stringcommand[,intreturn_var])

(3)system()函数很其它语言中的差不多,它执行给定的命令,输出和返回结果。第二个参数是可选的,用来得到命令执行后的状态码。

2、例子:?

代码如下:

?php?

system("/usr/local/bin/webalizer/webalizer");?

??

exec()

(1)原型:stringexec(stringcommand[,stringarray[,intreturn_var]])exec

(2)()函数与system()类似,也执行给定的命令,但不输出结果,而是返回结果的最后一行。虽然它只返回命令结果的最后一行,但用第二个参数array可以得到完整的结果,方法是把结果逐行追加到array的结尾处。所以如果array不是空的,在调用之前最好用unset()最它清掉。只有指定了第二个参数时,才塌链可以用第三个参数,用来取得命令执行的状态码。

怎样在本地运行PHP

1、首先需要在电脑上安装PHPstudy软件和notepad这两个代码编辑软件(如果找到可以代替的就用你那代替的),如图所示红色箭头所示:

2、接下来直接运行PHPstudy,点击红色箭头所指的启动,当左侧两个英文单词lightd和mysql后面显示两个绿点时,说明PHPstudy已经在电脑上成功运行。

3、选择右侧居中的?“php版本”将进入下图界面,服务器选Apache即可。

4、选择好之后,在弹出的phpstudy设置中,选择端口常规设置。

5、在“端口检测”处,查看服务器的端口是否被占用。网站编写好以后就放置在枣衫好网站目录下。

6、服务器搭设完成。新建一个文档另存在上面的目录里,文件名保存为index.php(自由发挥)。然后写一个你认为最简单的网页进行保存。

7、在浏览器网址处输入127.0.0.1,即可看到刚编写的网站主页,即php代码运行的效果。

下载的php源码怎么运行?

要想运行PHP代码,你得现有一个服务器环境。

1.在网上自己下载一个xampp,然后安装。

2.把你的代码放到xampp\htdocs\里面。

3.打开浏览器,输入127.0.0.1/文件名.php

比如,你得文件有个叫index.php的,直接输入127.0.0.1/index.php访问,就开始执行了。

4.建议在htdocs里面添加文件夹,防止混乱。

5.也可以凳铅将默认的htdocs目录更改到其他位置,这个网上介绍很多。

我爱编程网

以上,就是我爱编程网小编给大家带来的如何让php执行shell全部内容,希望对大家有所帮助!更多相关文章关注我爱编程网:www.52biancheng.com

免责声明:文章内容来自网络,如有侵权请及时联系删除。
与“如何让php执行shell”相关推荐
如何让java程序每天执行一次
如何让java程序每天执行一次

如何让java程序每天执行一次写一个定时器import java.util.Timer;  import java.util.TimerTask;    public class M {      public static void main(String[] args) {          // TODO todo.generated by zoer          Timer

2024-04-15 15:44:26
如何让java定时执行一个方法
如何让java定时执行一个方法

如何让java定时执行一个方法现在能想到的是三种方法能实现:1、普通thread实现:是最常见的,创建一个thread,然后让它在while循环里一直运行着,通过sleep方法来达到定时任务的效果。2、timertask:启动和去取消任务时可以控制,第一次执行任务时可以指定你想要的delay时间。3、scheduledexecutorservice实现:最理想的定时任

2024-04-20 07:04:57
PHP如何在后台执行?
PHP如何在后台执行?

phpexce异步执行是否可以获取到pid可以&lt;?phpexec(sprintf("%s &gt; %s 2&gt;&amp;1 &amp; echo $! &gt; %s", $cmd, $outputfile, $pidfile));?&gt;调用$cmd命令,将输出重定向到$outputfile,不显示错误信息,同时将进程id输出到$pidfile。PHP如何在后

2024-09-27 19:24:52
如何让JAVA程序一直运行
如何让JAVA程序一直运行

如何让JAVA程序一直运行一直运行的最好方式是,做成socketServer,一直循环监听,利用服务器推送技术去不断的访问client的文件,来判断是否被修改。可是这样专业化的制作,工程量就大了。还是看你的需求,如果不是项目要求的话,自己写的test的话,可以用SVN版本控制管理工具啊。只需要简单的配置就可以大家共享文件,还可以检查是否被更改,以及每个版本都会被记录和找回,很

2024-03-25 08:13:00
如何让tomcat启动时,就运行java
如何让tomcat启动时,就运行java

如何让tomcat启动时,就运行java一、创建Servlet在一个Web项目中创建一个Servlet,在web.xml文件中配置。将需要初始化的内容放在Servlet的init()方法实现。二、设置Servlet为自启动在web.xml文件中添加:&lt;servlet&gt;      &lt;servlet-name&gt;servlet的名字&lt;/s

2024-06-04 15:09:25
如何让php的输出文本自动换行
如何让php的输出文本自动换行

PHP让数据横4自动换行、每页显示10个、并分页显示、下面是我的基本代码、能显示&lt;?phpheader("Content-Type: text/html; charset=gb2312");include("conn.php");$pageSize = 10;$page = isset($_GET['p']) ? intval($_GET['p']) : 1 ;$page = max(

2024-11-03 00:02:24
如何在php中执行java代码?
如何在php中执行java代码?

linuxphp执行java失败linuxphp执行php三个应用领域?PHP技术主要应用于三个领域:01服务端脚本服务器脚本运行模式需要具备3个条件:php解析器(CGI或者服务器模块)、Web服务器、Web浏览器。具体执行流程:首先运行Web服务器,然后安装并配置php,最后可以用Web浏览器访问php程序的输出,即浏览服务端的php页面(或数据输出)。0

2024-05-28 03:18:20
php如何执行linux的curl指令
php如何执行linux的curl指令

菜鸟求助:PHP中调用系统命令为何有些命令总是失败PHP执行系统命令(简介及方法)在PHP中调用外部命令,可以用如下三种方法来实现:方法一:用PHP提供的专门函数(四个):PHP提供4个专门的执行外部命令的函数:exec(),system(),passthru(),shell_exec()1)exec()原型:stringexec(string$command[,arra

2024-08-29 06:33:59