很多站长朋友们都不太清楚php控制cmd,今天小编就来给大家整理php控制cmd,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 怎么在CMD里运行PHP 2、 php怎样执行cmd命令或者bat处理 - 技术问答 3、 如何在cmd下面写php代码 4、 如何在cmd命令行下运行php 5、 在服务器上用php调用cmd执行某exe文件,求代码!!!! 6、 php执行cmd脚本超时,不能去改ini因为超时期间页面一直在等待,怎么才能 怎么在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命令或者bat处理 - 技术问答php的内置函数exec,system都可以调用系统命令(shell命令),当然还有passthru,escapeshellcmd等函数。
语法 : string exec ( string command [, array output [, int return_var]] )
<?php
$a = exec("dir",$out,$status);
print_r($a);
print_r($out);
print_r($status);
?>
语法 : string system ( string command [, int return_var] )
<?php
$a = system("dir",$out);
print_r($a);
print_r($out);
?>
请运行结果 自行查看。
如何在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在php.ini文件中配置safe_mode参数支持命令执行的方法,可以参考下。
说明:
本节内容在wamp包安装的环境实现。
首先,打开php.ini,关掉安全模式safe_mode = off,然后在看看 禁用函数列表 disable_functions = proc_open, popen, exec, system, shell_exec ,把exec去掉。
在服务器上用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);
php执行cmd脚本超时,不能去改ini因为超时期间页面一直在等待,怎么才能PHP脚本执行超时的解决办法
在php中默认脚本执行超时时间为30秒了,如果未进行设置30秒之后如果你的脚本还未执行完就会超时了,下面我来给大详解解决PHP脚本执行超时的方法。
php.ini
中缺省的最长执行时间是
30
秒,虽然可以通过调整
php.ini
中
max_execution_time的值来达到目的,但有些情况是没有条件修改php.ini的,如何解决这个问题呢。
一种方法是在
PHP
脚本中加入
代码如下
ini_set('max_execution_time',
'0');
将运行时间设置成0(无限值);
另一种方法是在命令行下执行脚本,使用命令行执行脚本时,最大运行时间被设置为了无限值。
修改php.ini的脚本执行时间限制
编辑php.ini,修改max_execution_time值:
代码如下
max_execution_time=500
//此修改需要重新加载php.ini,需要重启web服务器生效。
通过.htaccess
文件设置脚本执行时间
代码如下
php_value
max_execution_time
500
在脚本中设置执行的最大时间
代码如下
ini_set('max_execution_time',
500);
用php的函数取消脚本的时间限制
代码如下
set_time_limit(0);
set_time_limit用来设置脚本的超时时间,此函数规定从该句运行时起程序必须在指定秒数内运行结束,超时则程序出错退出。
下面是一个例子.
有10000条数据,
要修改其中某些数据,
运用PHP分步执行处理,
代码如下:
action.php
代码如下
<?php
$stid
=
isset($_GET['stid'])?$_GET['stid']:0;
$endid
=
$stid
+
100;
$maxid
=
10000;
function
dosomething(){
//要时间比较多的操作
……
}
$sql_string=”select
*
from
`table`
where
id>’$stid’
and
id<=’$endid’
order
by
id”;
$datas
=
getdata_bysql($sql_string);
foreach($datas
as
$data){
//处理数据
…..
echo
$id.”
处理完成.
<br
/>”;
if($id>=$maxid){exit;}
}
if($stid<=$maxid){
$stid
=
$stid
+
100;
$url=”action.php?stid=$stid”;
echo
$url;
echo
‘<script
language=”javascript”>location=”‘.$url.’”;
</script>’;
}
?>
其中的dosomething()是一个耗时操作.
这里我们通过限制id范围来减少运行时间,
运行完后通过javascript的跳转来自动运行下一步
现在dedecms生成html页面时就是这样做
关于php控制cmd的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php控制cmd PHP控制下载流量的详细内容...