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

时间: 2024-07-31 19:14:51

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

Java 中无返回值的方法在使用时应该注意的问题

Java 中的方法是形态多样的.无返回值的方法在使用时应该规避哪些问题呢? 一.不可以打印调用或是赋值调用,只能是单独调用(非常重要): 二.返回值没有,不代表参数就没有: 三.不能return一个具体的值,否则会报错: 四.return分号可以直接省略: 五.无返回值方法应该使用类型void. 原文地址:https://www.cnblogs.com/yanglongbo/p/10981842.html

C#函数多返回值的方法

C#以前都是不支持多返回值,当需要返回多个值的时候,就会感觉比较麻烦,通常的做法有 1.采用ref,out 关键字返回 2.定义类或者结构体 返回对象 C# 6.0出来了新的语法 Tuple 支付返回多个值 示例: 1 class Demo 2 { 3 public void Run() 4 { 5 var num = Exec(5, 6); 6 Console.WriteLine(num.Item1); //第一个返回值 7 Console.WriteLine(num.Item2); //第二

059、Java中定义一个有参数无返回值的方法

01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public static void main(String[] args) { pay(10.0); // 调用方法 pay(-10.0); // 调用方法 } public static void pay(double money) { // 购买支付操作 if (money > 0.0) { // 现在已

有的函数有返回值 有的没有 当测试输出为为空时,应该是不需要接收的函数你给接收了

replace函数有返回值  需要变量接收(大部分都需要变量接收) s='abc' s=s.replace('a','x',1) 列表remove函数无返回值(非常特殊) 不需要变量接收 li=[1,2,3]  li.remove(1) 列表extend函数无返回值 不需要变量接收

C++函数的返回值类型和参数类型

在C++中函数的定义为: type name(P1,P2) {stament}; 其中type为函数的返回值,name 为函数的标识符,P1,P2为函数的两个参数,该参数作用范围仅在该函数体内. 当一个函数不要返回任何值时,该函数为空函数,其类型为void,当该函数也没有参数时,也可以用void表示无参数,也可什么都不填,例如: void printmessage (void){  cout << "I'm a function!";} 定义了一个空函数,该函数无返回值,且

(一)Python入门-5函数:02形参和实参-文档字符串-函数注释-返回值详解

一:形参和实参 [操作]定义一个函数,实现两个数的比较,并返回较大的值. 1 def printMax(a,b): 2 '''实现两个数的比较,并返回最大值!''' 3 if a >b: 4 print(a,'较大值') 5 else: 6 print(b, '较大值') 7 8 printMax(20,30) 9 printMax(30,5) 10 11 #测试文档字符串的使用 12 help(printMax) 13 help(printMax.__doc__) 上面的 printMax 函

Java基础---Java中无参数无返回值方法使用(三十六)

Java 中无参无返回值方法的使用 如果方法不包含参数,且没有返回值,我们称为无参无返回值的方法. 方法的使用分两步: 第一步,定义方法 例如:下面代码定义了一个方法名为 show ,没有参数,且没有返回值的方法,执行的操作为输出 " welcome to imooc. " 注意哦: 1. 方法体放在一对大括号中,实现特定的操作 2. 方法名主要在调用这个方法时使用,需要注意命名的规范,一般采用第一个单词首字母小写,其它单词首字母大写的形式 第二步,调用方法 当需要调用方法执行某个操作

慕课网-Java入门第一季-7-2 Java 中无参无返回值方法的使用

来源:http://www.imooc.com/code/1578 如果方法不包含参数,且没有返回值,我们称为无参无返回值的方法. 方法的使用分两步: 第一步,定义方法 例如:下面代码定义了一个方法名为 show ,没有参数,且没有返回值的方法,执行的操作为输出 “ welcome to imooc. ” 注意哦: 1. 方法体放在一对大括号中,实现特定的操作 2. 方法名主要在调用这个方法时使用,需要注意命名的规范,一般采用第一个单词首字母小写,其它单词首字母大写的形式 第二步,调用方法 当需

Java加载jar文件并调用jar文件当中有参数和返回值的方法

在工作当中经常遇到反编译后的jar文件,并要传入参数了解其中的某些方法的输出,想到Java里面的反射可以实现加载jar文件并调用其中的方法来达到自己的目的.就写了个Demo代码. 以下的类可以编译生成hello.jar文件. 1 package org.lele.fatpanda; 2 3 public class Util 4 { 5 public static String myName; 6 /* 7 * 无参数,无返回值的方法. 8 */ 9 public static void get