为什么不能使用PHP的exec函数?

时间:2010-03-27 10:20:03

标签: php

我的脚本尝试exec()wget但似乎失败了(尽管没有错误引发)。可能是什么问题呢?我应该以某种方式调整PHP吗?我刚刚在Ubuntu上安装了Apache和PHP ......

3 个答案:

答案 0 :(得分:1)

third parameter添加到exec()以找出exit code of wget

答案 1 :(得分:0)

也许wget不在apache / php进程的(搜索)路径中 你有没有尝试过wget可执行文件的绝对路径?

答案 2 :(得分:0)

你的$_GET['one']是什么?视频文件的名称?一个号码?一个网址?什么是$file?什么'$one

明显的错误来源:

  1. 是否设置了所有这些变量?如果$ 1为空,那么wget无处可去获取文件。如果$ _GET ['one']和$ file为空,那么输出文件很可能不存在,因为找不到目录($ _GET ['one'])为空,或者$ file为空,导致wget尝试输出到目录名,这是不允许的。
  2. 任何变量中的'非法'字符。 $file是否包含shell元字符?任何;?* / \等......?这些都会搞砸命令行。
  3. 为什么你还在使用wget?您将原始查询参数传递给shell,这只是一个问题。传入shell元字符将是微不足道的,这将允许远程用户在您的Web服务器上运行ANYTHING。请考虑以下查询:

    http://example.com/fetch.php?one=;%20rm%20-rf%20/%20;

  4. 在您的脚本中变为:

    wget -O /var/www/videos/; rm -rf / ;/$file $one
    

    现在您的脚本很乐意删除您的Web服务器用户有权访问的服务器上的所有内容。