php exec()

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php exec()相关的知识,希望对你有一定的参考价值。

exec("git clone git://github.com/ddd/ddd.git ../test")执行不成功
这条语句有什么错误吗 这条语句在cmd里面是可以运行的

php的exec函数用法如下:

exec — 执行一个外部程序

string exec( string $command[, array &$output[, int &$return_var]])

exec() 执行command 参数所指定的命令。 

command:要执行的命令。

output:如果提供了 output 参数,那么会用命令执行的输出填充此数组,每行输出填充数组中的一个元素。数组中的数据不包含行尾的空白字符,例如 \\n 字符

请注意,如果数组中已经包含了部分元素,exec()函数会在数组末尾追加内容。

如果不想在数组末尾进行追加,请在传入 exec() 函数之前对数组使用 unset() 函数进行重置。

return_var:如果同时提供output和return_var 参数,命令执行后的返回状态会被写入到此变量。 

返回值:

命令执行结果的最后一行内容。

如果需要获取未经处理的全部输出数据,请使用 passthru() 函数。  

如果想要获取命令的输出内容,请确保使用 output 参数。 

参考技术A 原因在于exec这个函数,需要php有权限的,首先看phpinfo,exec这个函数有没有禁止,如果禁止到php.ini disabled_function里面修改,然后需要给php权限,这个权限跟apache或者iis进程的用户有关。追问

disabled_function 里面是为空的啊

追答

那就是 权限的问题

参考技术B 检查git命令的权限,git程序目录的权限 参考技术C 在apache里面有个配置项需要修改后,就不会报这种错误了追问

哪个?

追答

exec()这个报错是因为php里面有个短编码问题,你把php.ini里面的一个设置为short_open_tag = On

本回答被提问者采纳
参考技术D 不成功总该有错误信息吧,错误信息是纠正错误的关键。追问

没有显示错误信息啊,返回值为1

PHP的exec()函数无返回值排查方法[转]

在安全imagemagic时 需要用到 exec很多服务器上安装失败

exec()执行外部命令失败,但没有任何错误信息。 

 

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

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

可以更改如下:

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

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

 

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

php里面一共有三个函数可以用来执行外部命令system,exec,passthru。

转自  http://blog.csdn.net/aoyoo111/article/details/21049759

更多精彩博文请到言会咸的博客

网址:http://blog.csdn.net/aoyoo111






以上是关于php exec()的主要内容,如果未能解决你的问题,请参考以下文章

如何启用php.ini的exec 权限

PHP 中的 exec()、shell_exec、system() 和 passthru() 函数有啥不同? [复制]

LINUX+NGINX下的PHP shell_exec()函数执行linux命令 2019-08-08

php执行外部命令函数:exec()passthru()system()shell_exec()对比

PHP执行系统外部命令函数:exec()passthru()system()shell_exec()

PHP中的curl_exec