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调用如下:
- exec(‘convert a.jpg b.jpg‘, $output, $return_val);
可以更改如下:
- exec(‘convert a.jpg b.jpg 2>&1‘, $output, $return_val);
- 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 中的 exec()、shell_exec、system() 和 passthru() 函数有啥不同? [复制]
LINUX+NGINX下的PHP shell_exec()函数执行linux命令 2019-08-08
php执行外部命令函数:exec()passthru()system()shell_exec()对比