PHP提供共了3个专门的执行外部命令的函数:system(),exec(),passthru()。参考:http://www.jb51.net/article/19618.htm

区别: 
system() 输出并返回最后一行shell结果。 
exec() 不输出结果,返回最后一行shell结果,所有结果可以保存到一个返回的数组里面。 
passthru() 只调用命令,把命令的运行结果原样地直接输出到标准输出设备上。 
相同点:都可以获得命令执行的状态码

exec() 
原型:string exec (string command [, string array [, int return_var]])

exec()执行外部命令失败,但没有任何错误信息。参考:http://www.jb51.net/article/110108.htm

exec执行某命令在命令行下没有问题,但是在php中就出错。这个问题99.99%与权限有关,但是exec执行的命令不会返回错误。一个技巧就是使用管道命令,假设你的exec调用如下:

1
exec('convert a.jpg b.jpg'$output$return_val);

可以更改如下:

1
2
3
4
exec('convert a.jpg b.jpg 2>&1', $output, $return_val);
 
print_r($output);

使用 2>&1,命令就会输出shell执行时的错误到$output变量, 输出该变量即可分析。

备注: exec有3个参数,第一个是要执行的命令,第二个是参数是一个数组,数组的值是由第一个命令执行后生成的,第三个参数执行的状态,0表示成功,其他都表示失败。

passthru() 
原型:void passthru (string command [, int return_var])

system() 
原型:string system (string command [, int return_var])

php 执行 命令行命令的更多相关文章

  1. 一些坑 Java 执行命令行命令 Spring Boot 打包为jar ResourceUtils.getFile 等出现的问题

    Java 执行命令行命令 这个没技术含量的东西耗费了我半个多小时 String command = ....; Process process = Runtime.getRuntime().exec( ...

  2. system调用命令行命令而不显示命令行窗口

    system调用命令行命令而不显示命令行窗口 通常用system调用命令行命令时都会弹出黑底白字的命令行窗口,下面的代码可以不显示弹出的命令行窗口. 代码如下 #pragma comment( lin ...

  3. C/C++ 程序中调用命令行命令并获取命令行输出结果

    在 c/c++ 程序中,可以使用 system()函数运行命令行命令,但是只能得到该命令行的 int 型返回值,并不能获得显示结果.例如system(“ls”)只能得到0或非0,如果要获得ls的执行结 ...

  4. MySql命令行命令和SQL语句

    一.常用mysql命令行命令 1.启动MYSQL服务 net start mysql 停止MYSQL服务 net stop mysql 2.netstat -na|findstr 3306 查看被监听 ...

  5. Windows命令行命令集锦

    原文:Windows命令行命令集锦 转自:http://www.me2wg.com/bbs/forum.php?mod=viewthread&tid=15830 winver--------- ...

  6. iOS工程师常用的命令行命令总结

    感觉有点标题党了. 作为一个iOS工程师,没有做过服务端,主要用的是mac电脑,此篇博文是记录我在工作,学习的过程中用的命令行命令的记录和归纳总结 一. mac命令行 1. cd /Users/xxx ...

  7. Windows与Linux的命令行命令对比

    Windows与Linux的命令行命令对比 * Windows不区分大小写,Linux区分大小写的. sn DOS Command UNIX Equivalent Effect 影响 1 ASSIGN ...

  8. [转帖]Windows与Linux的命令行命令对比

    Windows与Linux的命令行命令对比 https://www.cnblogs.com/sztom/p/10785140.html * Windows不区分大小写,Linux区分大小写的. sn ...

  9. 我自己总结的sqlite的命令行命令集

    我自己总结的sqlite 的命令行命令 导入文本数据文件时,设置分隔符为","sql>.separator "," sql>import devic ...

随机推荐

  1. Java知识回顾 (10) 线程

    再次声明,正如(1)中所描述的,本资料来自于runoob,略有修改. 一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务. Java 给多线程编程提供了内 ...

  2. strncpy, strncpy_s

    Defined in header <string.h>       (1)   char *strncpy( char *dest, const char *src, size_t co ...

  3. ajax的请求,参数怎么管理?

    一般发送一条ajax 然后点击界面需要更改查询条件,第一种是做一个form表单比较合适的设计.更改了参数回收表单然后重新发送ajax: 还有一种是把参数缓存到变量中,然后更改了条件修改变量再次重发aj ...

  4. openssl RSA密钥格式PKCS1和PKCS8相互转换

    RSA私钥格式PKCS1和PKCS8相互转换 RSA公钥格式PKCS1和PKCS8相互转换 以下转换基于openssl命令的操作: 1. openssl 生成pkcs1格式的私钥,密钥长度1024位, ...

  5. 运行Keras版本的Faster R-CNN(1)

    Keras版本的Faster R-CNN源码下载地址:https://github.com/yhenon/keras-frcnn下载以后,用PyCharm打开(前提是已经安装了Tensorflow-g ...

  6. 关于dede后台登陆后一片空白以及去除版权

    今天家里的电脑上新装DEDE5.7后台登陆后竟然一片空白,装PHPCMS却没有问题.百度了好久,也没找到一个像样的答案,晕死! 看了源码后发现在源码里的类库中很多都是PHP4的语法,var这个函数在P ...

  7. 详解 JVM Garbage First(G1) 垃圾收集器(转载)

    前言 Garbage First(G1)是垃圾收集领域的最新成果,同时也是HotSpot在JVM上力推的垃圾收集器,并赋予取代CMS的使命.如果使用Java 8/9,那么有很大可能希望对G1收集器进行 ...

  8. .net core 2.0+superui +Dapper.SimpleCRUD+mysql+NLog

    **_ .net core 2.0+superui +Dapper.SimpleCRUD+mysql+NLog _** 前端框架 superui http://www.supermgr.cn/ 1.组 ...

  9. 使用 fail2ban 防御 SSH 服务器的暴力破解攻击

    对于SSH服务的常见的攻击就是暴力破解攻击——远程攻击者通过不同的密码来无限次地进行登录尝试.当然SSH可以设置使用非密码验证验证方式来对抗这种攻击,例如公钥验证或者双重验证.将不同的验证方法的优劣处 ...

  10. Atitit 项目版本管理gitflow 与 Forking的对比与使用

    Atitit 项目版本管理gitflow 与 Forking的对比与使用 1.1. 版本管理的历史 csv>>svn >git 1 1.2. gitflow的核心是分版本管理,for ...