很多站长朋友们都不太清楚php注入cmd,今天小编就来给大家整理php注入cmd,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 怎么在cmd里面运行php命令 2、 如何在cmd下面写php代码 3、 如何在cmd命令行下运行php 4、 在服务器上用php调用cmd执行某exe文件,求代码!!!! 5、 怎么在CMD里运行PHP 怎么在cmd里面运行php命令命令行直接执行语句 C:\Php>php -r "echo \"hello world!\""; 或者 命令执行文件 C:\Php>php -f C:/apache/apache2/www/demo/test/index.php。其实你自己在后盾人看看教学视频,加上自己的理解,多想想就明白了,很简单的
如何在cmd下面写php代码首先要把php目录放到环境变量path下面:
我的电脑-》属性-》高级-》环境变量-》系统变量->Path->编辑->
查看路径下有没有php目录,如果没有加上
比如我的php路径是E:AppServphp5 所以要在最后面加上E:AppServphp5;
成功后win+r 调出命令行,输入php-v 查看版本,如果不对请检查坏境变量是否设置正确
运行php文件php-f 路径+文件名 或者php路径+文件名
(小技巧:windows下面可以把文件直接拖进去,省去cd/命令,或者慢慢拼写完整路径)
两种方法都可以执行命令,如果是.php文件则执行php代码,否则直接以字符串形式读取文件
4在命令行直接写并运行PHP代码,在windows环境下,尽量使用双引号, 在linux环境下则尽量使用单引号来完成。php-r “echo getcwd();”
如何在cmd命令行下运行php在CMD下运行PHP文件有两种方法:
方法一、直接调用PHP.EXE来运行,例如你需要运行A.PHP,而PHP安装在C:\PHP下面,那么可以用下面的命令运行它:
C:\>C:\PHP\PHP.EXE
A.PHP
方法二、利用文件关联,直接把A.PHP作为A.BAT等文件一样运行,例如下面的命令:
C:\>A.PHP
在服务器上用php调用cmd执行某exe文件,求代码!!!!很多情况下需要php调用其他程序如shell命令、shell脚本、可执行程序等等,此时需要使用到诸如exec/system/popen/proc_open等函数,每种函数有各自适合使用的场景以及需要注意的地方。
前提:PHP没有运行在安全模式
如果PHP运行在安全模式下,那么在执行外部命令、打开文件、连接数据库、基于HTTP的认证这4个方面将会受到制约,可能在调用外部程序时无法获取预期的结果,此时需要设置特定目录,可以在php.ini中编辑safe_mode_exec_dir参数来指定。
1. exec
原型:string exec ( string command [, array output [, int return_var]] )
描述:返回值保存最后的输出结果,而所有输出结果将会保存到$output数组,$return_var用来保存命令执行的状态码(用来检测成功或失败)。
例子:$ret = exec("ls -al", $output, $var);
注意:
A. 输出结果会逐行追加到$output中,因此在调用exec之前需要unset($output),特别是循环调用的时候。
B.
如果想通过exec调用外部程序后马上继续执行后续代码,仅仅在命令里加""是不够的,此时exec依然会等待命令执行完毕;需要再将标准输出
做重定向才可以,例如:exec("ls -al >/dev/null ", $output, $var);
C.
要学会善用EscapeShellCmd()和EscapeShellArg()。函数EscapeShellCmd把一个字符串
中所有可能瞒过Shell而去执行另外一个命令的字符转义。这些字符在Shell中是有特殊含义的,象分号(|),重定向(>)和从文件读入
(<)等。函数EscapeShellArg是用来处理命令的参数的。它在给定的字符串两边加上单引号,并把字符串中的单引号转义,这样这个字符串
就可以安全地作为命令的参数。
2. system
原型:string system ( string command [, int return_var] )
描述:执行给定的命令,返回最后的输出结果;第二个参数是可选的,用来得到命令执行后的状态码。
例子:$ret = system("ls -al", $var);
注意:略。
3. passthru
原型:void passthru (string command [, int return_var])
描述:执行给定的命令,但不返回任何输出结果,而是直接输出到显示设备上;第二个参数可选,用来得到命令执行后的状态码。
例子:passthru("ls -al", $var);
注意:略。
4. popen
原型:resource popen ( string command, string mode )
描
述:打开一个指向进程的管道,该进程由派生给定的 command 命令执行而产生。 返回一个和 fopen()
所返回的相同的文件指针,只不过它是单向的(只能用于读或写)并且必须用 pclose() 来关闭。此指针可以用于 fgets(),fgetss()
和 fwrite()。
例子:$fd = popen("command", 'r'); $ret = fgets($fd);
注意:只能打开单向管道,不是'r'就是'w';并且需要使用pclose()来关闭。
5. proc_open
原
型:resource proc_open ( string cmd, array descriptorspec, array
pipes [, string cwd [, array env [, array other_options]]] )
描述:与popen类似,但是可以提供双向管道。具体的参数读者可以自己翻阅资料,比如该博客:。
注意:
A. 后面需要使用proc_close()关闭资源,并且如果是pipe类型,需要用pclose()关闭句柄。
B. proc_open打开的程序作为php的子进程,php退出后该子进程也会退出。
C. 笔
者在使用的时候遇到获取外部程序输出阻塞的问题,也就是在例子中的fgets($pipes[1])语句阻塞了,无法继续进行。经过多方查证后发现,问题
一般出在外部程序中,比如外部程序是C程序,使用fprintf(stdin, "****
\n");输出结果,此时需要加上fflush(stdout);才行,否则输出结果可能会暂留缓存中,无法真正输出,而php也就无法获取输出了。
例子:
///< 打开管道
$pwd = "*****";
$pipes = array();
$command = "*****";
$desc = array(array('pipe', 'r'), array('pipe', 'w'), array('pipe', 'w'));
$handle = proc_open($command, $desc, $pipes, $pwd);
if (!is_resource($handle)) {
fprintf(STDERR, "proc_open failed.\n");
exit(1);
}
///< 读写
fwrite($pipes[0], "*****\n");
$ret = rtrim(fgets($pipes[1]), "\n");
///< 关闭管道
fclose($pipes[0]);
fclose($pipes[1]);
fclose($pipes[2]);
proc_close($handle);
怎么在CMD里运行PHPwindow7解决方案,XP没试,不过想来也是同理,差不了多少:
1、你的php.exe文件的路径,比如d:\php5.3\
2、打开计算机右键 > 属性 > 高级系统设置 > 高级 > 环境变量
3、在系统变量中找到Path看看有没有你的php路径,如果没有,则在Path中加入你的php路径,如:d:\php5.3\,保存即可
4、在cmd命令行下进入到你的站点目录,直接输入文件名即可,如:F:\www\socket>php.exe s.php
关于php注入cmd的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php注入cmd php注入 引号闭合 问题的详细内容...