我在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它。
答案 0 :(得分:0)
您可以检查取消链接是否失败? 成功时,它返回成功删除的文件数。失败时,它返回false并设置$! (错误)。
答案 1 :(得分:0)
当然你想在PHP本身使用GD钩子吗? http://php.net/manual/en/book.image.php