使用GD :: Graph打印到.gif文件。写入文件时权限被拒绝

时间:2010-11-10 15:25:33

标签: perl gd permission-denied

我在PHP中编写了一个用户输入的页面,然后在传入这些参数后将shell_exec写入Perl文件。

我的Perl文件基本上生成了一个GD :: Graph。当我第一次运行脚本时,似乎没有问题,我得到一个有效的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 生成的,因此我没有足够的权限来CHMOD它。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

当然你想在PHP本身使用GD钩子吗? http://php.net/manual/en/book.image.php