php执行linux系统命令的相关函数exec|system|popen
2018-03-02 09:49
791 查看
php的内置函数exec、system都可以调用系统命令(shell命令), 当然还有更多的相关函数。在有些时候,还是逼不得已采用上这些函数,可以很方便的处理遇到的难题,比如:调用微信公众平台的新增素材接口,实现静默的上传图片,让用户感觉不到这个过程;或者执行linux命令不受脚本超时的影响;还有许多我们想不到的场景都可以用上。
但要想使用这些内置函数,需要在php.ini中关闭安全模式,否则为了安全性,php是不允许调用系统命令。
这里主要演示exec | system 两个内置函数,先展示一下示例
exec示例:$command = "curl -F media=@test.jpg "https://api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=image";$retval = array();exec($command, $output, $status);if ($status == 0) { return $output;}
该函数返回值:Array( [0] => '{"type":"image","media_id":"NkTmNilcJeAwrZEWBvapjgTeaJZ1h9mAkltAtZvr384iOV5scXDt4a5F7rHiV_hV","created_at":1509671464}')
system示例:$command = "curl -F media=@test.jpg "https://api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=image";$last_line = system($command, $retval);if ($retval == 0) { return $last_line;}
该函数返回值:{"type":"image","media_id":"NkTmNilcJeAwrZEWBvapjgTeaJZ1h9mAkltAtZvr384iOV5scXDt4a5F7rHiV_hV","created_at":1509671464}
1、exec函数 — 执行一个外部程序说明:执行外部程序。语法:string exec ( string $command [, array &$output [, int &$return_var ]] )返回值: 无说明 : exec( )执行给予的命令command,不过它并不会输出任何东西,它简单的从命令的结果中传回最后一行,如果你需要去执行一个命令,并且从命令去取得所有资料时,可以使用passthru( )这个函数。 如果存在第二个参数$output,则指定的数组将会被命令所输出的每一行填满,即结果全部返回到$output变量中。(注意 : 如果数组先前已经包含了一些元素的话,exec( )将会把它附加在数组的后面,如果你不想要此函数附加元素的话,你可以在传递此数组给exec( )之前呼叫unset( )。) 如果存在第二、第三个参数$output和$return_var,那么第三个参数将传回执行的命令状态码,0表示成功,1表示失败。注意事项: 注意 : 如果你允许来自使用者输入的资料,可以传递到此函数,那么你应该使用escapeshellcmd( )来确定此使用者无法哄骗(trick)系统来执行武断的(arbitrary)命令。 注意 : 如果你使用此函数来启动一个程式,而且希望在背景里(background)执行的时候离开它,你必须确定此程式的输出是转向(redirected)到一个文件或是一些输出的资料流,否则PHP将会悬挂(hang)直到程式执行结束。
2、system函数 — 执行外部程序,并且显示输出说明:执行外部程序并显示输出资料。语法:string system ( string $command [, int &$return_var ] )返回值: 字符串说明 : system( )执行给予的命令command,并且输出结果。 如果存在第二个参数$return_var,该参数将传回执行的命令状态码,0表示成功,1表示失败。注意事项: 注意 : 如果你允许来自使用者输入的资料,可以传递到此函数,那么你应该使用escapeshellcmd( )来确定此使用者无法哄骗(trick)系统来执行武断的(arbitrary)命令。 注意 : 如果你使用此函数来启动一个程式,而且希望在背景里(background)执行的时候离开它,你必须确定此程式的输出是转向(redirected)到一个文件或是一些输出的资料流,否则PHP将会悬挂(hang)直到程式执行结束。 如果PHP是运作成伺服器模组,在输出每一行后,system( )会试着自动地清除web伺服器的输出缓冲。 成功则传回命令的最后一行,失败则传回false。 如果你需要去执行一个命令,并且从命令去取得所有资料时,可以使用passthru( )这个函数。
感谢支持,PHP更多的程序执行函数,请参阅官方文档:http://php.net/manual/zh/ref.exec.php
但要想使用这些内置函数,需要在php.ini中关闭安全模式,否则为了安全性,php是不允许调用系统命令。
这里主要演示exec | system 两个内置函数,先展示一下示例
exec示例:$command = "curl -F media=@test.jpg "https://api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=image";$retval = array();exec($command, $output, $status);if ($status == 0) { return $output;}
该函数返回值:Array( [0] => '{"type":"image","media_id":"NkTmNilcJeAwrZEWBvapjgTeaJZ1h9mAkltAtZvr384iOV5scXDt4a5F7rHiV_hV","created_at":1509671464}')
system示例:$command = "curl -F media=@test.jpg "https://api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=image";$last_line = system($command, $retval);if ($retval == 0) { return $last_line;}
该函数返回值:{"type":"image","media_id":"NkTmNilcJeAwrZEWBvapjgTeaJZ1h9mAkltAtZvr384iOV5scXDt4a5F7rHiV_hV","created_at":1509671464}
1、exec函数 — 执行一个外部程序说明:执行外部程序。语法:string exec ( string $command [, array &$output [, int &$return_var ]] )返回值: 无说明 : exec( )执行给予的命令command,不过它并不会输出任何东西,它简单的从命令的结果中传回最后一行,如果你需要去执行一个命令,并且从命令去取得所有资料时,可以使用passthru( )这个函数。 如果存在第二个参数$output,则指定的数组将会被命令所输出的每一行填满,即结果全部返回到$output变量中。(注意 : 如果数组先前已经包含了一些元素的话,exec( )将会把它附加在数组的后面,如果你不想要此函数附加元素的话,你可以在传递此数组给exec( )之前呼叫unset( )。) 如果存在第二、第三个参数$output和$return_var,那么第三个参数将传回执行的命令状态码,0表示成功,1表示失败。注意事项: 注意 : 如果你允许来自使用者输入的资料,可以传递到此函数,那么你应该使用escapeshellcmd( )来确定此使用者无法哄骗(trick)系统来执行武断的(arbitrary)命令。 注意 : 如果你使用此函数来启动一个程式,而且希望在背景里(background)执行的时候离开它,你必须确定此程式的输出是转向(redirected)到一个文件或是一些输出的资料流,否则PHP将会悬挂(hang)直到程式执行结束。
2、system函数 — 执行外部程序,并且显示输出说明:执行外部程序并显示输出资料。语法:string system ( string $command [, int &$return_var ] )返回值: 字符串说明 : system( )执行给予的命令command,并且输出结果。 如果存在第二个参数$return_var,该参数将传回执行的命令状态码,0表示成功,1表示失败。注意事项: 注意 : 如果你允许来自使用者输入的资料,可以传递到此函数,那么你应该使用escapeshellcmd( )来确定此使用者无法哄骗(trick)系统来执行武断的(arbitrary)命令。 注意 : 如果你使用此函数来启动一个程式,而且希望在背景里(background)执行的时候离开它,你必须确定此程式的输出是转向(redirected)到一个文件或是一些输出的资料流,否则PHP将会悬挂(hang)直到程式执行结束。 如果PHP是运作成伺服器模组,在输出每一行后,system( )会试着自动地清除web伺服器的输出缓冲。 成功则传回命令的最后一行,失败则传回false。 如果你需要去执行一个命令,并且从命令去取得所有资料时,可以使用passthru( )这个函数。
感谢支持,PHP更多的程序执行函数,请参阅官方文档:http://php.net/manual/zh/ref.exec.php
相关文章推荐
- PHP如何执行Linux系统命令呢?system();exec();popen();函数
- PHP在Linux下Apache环境中执行exec,system,passthru等服务器命令函数
- 用php 执行PhantomJS文件,php中使用exec,system等函数调用系统命令
- PHP执行系统外部命令函数:exec()、passthru()、system()、shell_exec()
- PHP 执行系统外部命令的函数- system() exec() passthru()
- PHP执行系统命令 exec,system,passthru,popen
- PHP执行系统外部命令函数:exec()、passthru()、system()、shell_exec()
- PHP中exec、system等函数调用linux命令问题
- PHP执行linux系统命令的几个基本函数
- PHP 执行系统外部命令 system() exec() passthru()
- PHP 执行系统外部命令 system() exec() passthru()
- PHP 执行系统外部命令 system() exec() passthru()
- PHP 执行系统外部命令 system() exec() passthru()
- php中使用exec,system等函数调用系统命令
- php中使用exec,system等函数调用系统命令
- php中使用exec,system等函数调用系统命令
- php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
- PHP中exec、system等函数调用linux命令问题
- PHP 执行系统外部命令 system() exec() passthru()
- PHP 执行系统外部命令 system() exec() passthru()