PHP / Python下载脚本不会完成

时间:2014-04-04 06:12:42

标签: php python cgi

我正在尝试创建一个脚本,以便用户可以输入一个URL和新文件名,并将该URL下载(重命名为新文件名)到/ var / www / dl,并且进度文件(progress0001.txt ... progressXXXX.txt)将随着每次下载的进行而更新

我有两个文件:dl.php和rdl.py

dl.php:

<?php
$name=$_GET["name"];
if (file_exists("dl/$name")){
die("FILE EXISTS");
}
else {
$str=("/var/www/rdl.py '$name' '".$_GET["url"]."'");
//echo $str;
exec("$str &");
}
?>
added

rdl.py

#!/usr/bin/env python
import urllib, os, sys
fname=sys.argv[-2]
url=sys.argv[-1]
name="progress"
end="txt"
while os.path.isfile("/var/www/p/%s.%s"%(name, end)):
    try:
        post=int(name[-4:])
        name=name[:-4]
    except:
        post=0
    post+=1
    name="%s%04i"%(name, post)
pname="%s.%s"%(name, end)
def report(count, blockSize, totalSize):
    global pname
    percent = float(count)*blockSize*100/totalSize
    pg=open("/var/www/p/%s"%pname, "w+")
    pg.write(str(percent))
urllib.urlretrieve(url, os.path.join("/var/www/dl", fname), reporthook=report)

我可以在命令行中运行传递给php文件中的exec的确切命令,并且它可以正常工作。但是当PHP脚本执行它时,我最终会得到一个存在的下载文件,但它是完全空的,没有进度文件。 我已经谷歌搜索并调整了几个小时,我完全失去了。这是怎么回事?

1 个答案:

答案 0 :(得分:0)

它最终成为文件权限问题,apache没有权限执行脚本,因为它没有拥有它们。