Home  >  Article  >  Backend Development  >  Atitit.执行cmd 命令行 php

Atitit.执行cmd 命令行 php

WBOY
WBOYOriginal
2016-06-23 13:31:08911browse

Atitit.执行cmd 命令行 php

 

1. 执行cmd 命令行,调用系统命令的基础 1

1.1. 实际执行模式 1

1.2. 空格的问题 1

1.3. 中文路径的问题,程序文件读取编码设置 1

1.4. 回显乱码 2

2. exec,system等函数调用系统命令 2

3. php.ini,关掉安全模式safe_mode = off 3

4. 参考 3

 

 

1. 执行cmd 命令行,调用系统命令的基础

1.1. 实际执行模式

Processmonitor 检查。得到。。

PID: 115372, Command line: cmd.exe /c "D:\workspace 绌烘?\AtiBrow\exp_receipt.bat"

1.2. 空格的问题

双引号解决

1.3. 中文路径的问题,程序文件读取编码设置

Php.ini中的default_charset = "utf-8"  只是设置post,get的编码,不能设置php文件的读取编码。。最好是注释掉此参数,让他根据文件本身的编码自动判断,否则输出的php结果都 header('Content-Type:text/html;charset=utf8

 

作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com

 

 

原因在于php文件本身是用系统字符集来编码的,中文的windows XP都是用GB2312,每一个文件头部都有字段指示该文件是用何种方式编码的

 

用javac编译java源文件时,编译器默认用系统编码读源文件里的内容。如果源文件不是用系统编码来保存的,可以用命令javac -encoding指定具体的编码

 

淋巴,只能不个php文件的编码设置成gbk。。才ok。。

 

1.4. 回显乱码

 

 header('Content-Type:text/html;charset=gbk');  

 

 

2. exec,system等函数调用系统命令

 这二个都是用来调用系统shell命令,

  不同点:

  exec可以把执行的结果全部返回到$output函数里(数组),$status是执行的状态 0为成功 1为失败

  systerm不需要提供$output函数,他是直接把结果返回出来,同样$return_var是执行的状态码 0为成功 1为失败

  exec示例:

 

1. 以下为引用的内容:  

2. 

3. $a = exec("dir",$out,$status);  

4. print_r($a);  

5. print_r($out);  

6. print_r($status);  

7. ?> 

  system示例:

 

1. 以下为引用的内容:  

2. 

3. $a = system("dir",$out);  

4. print_r($a);  

5. print_r($out);  

6. ?> 

 

3. php.ini,关掉安全模式safe_mode = off

 

首先,打开php.ini,关掉安全模式safe_mode = off,然后在看看 禁用函数列表 disable_functions = proc_open, popen, exec, system, shell_exec ,把exec去掉。

 

 

4. 参考

 

php中使用exec,system等函数调用系统命令.htm

Apache以及PHP的默认编码问题解决(详解)_php追逐_新浪博客.htm

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn