ユーザー入力を受け取るページを PHP で作成し、それらのパラメーターを渡した後、Perl ファイルに対して shell_exec を実行しました。
私の Perl ファイルは基本的に GD::Graph を生成します。初めてスクリプトを実行すると、問題はないようで、有効な image.gif ファイルが取得されます。ただし、もう一度実行しても、image.gif ファイルのデータは変更されません。上書きできないかのように、同じままです。
次に、シェル経由で 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を行うための十分な権限がありません。