2010-11-10 38 views
0

我用PHP编写的一个网页,需要用户输入,然后我做了shell_exec在传递这些参数后一个Perl文件。使用GD :: Graph打印到.gif文件。权限被拒绝而写入文件

我的Perl文件基本上生成GD ::图。当我第一次运行脚本时,似乎没有问题,我得到一个有效的image.gif文件。但是,再次运行它不会更改image.gif文件上的任何数据。它仍然是一样的,好像它不能被覆盖。

然后我通过shell执行Perl脚本并手动传递参数。以下是错误消息我得到:

Failed to save graph to file: uploads/image.gif. Permission denied at image.pl line 178. 

Perl中的相关代码:

my $bar_file = $filepath . '/image.gif'; 

    if (-e $bar_file) { 
      #If file exists, delete 
    unlink($bar_file); 
    } 
    else { 
    print "File does not exist."; 
    } 

    open(IMG, ">$bar_file") 
     || die ("\nFailed to save graph to file: $bar_file. $!"); 

    binmode IMG; 
    print IMG $plot->gif(); 
    close IMG; 

而问题的行178:

open(IMG, ">$bar_file") 

我试图改变文件CHMOD 777,但自从其生成Apache后,我没有足够的权限来修改它。

回答

0

你可以检查是否取消链接失败? 成功时,它返回成功删除的文件数。失败时,它返回false并设置$! (错误)。

+0

嗨Freek:问题是与.gif文件的权限。我所做的是当我创建它时,我的CHMOD在Perl中是775,这样它就可以重写。感谢您的复制,但.. – c0d3rs 2010-11-10 16:26:18