更新:我更正了以下权限问题,现在可以读取 dancer 生成的日志文件了。有一个小代码错误,已修复。所以现在日志什么都不显示,但我的 POST 请求仍然默默失败!:'(
更新 2:我通过授予写入权限来修复此问题/srv/www/domain.com/MyApp/logs
我有:
- 具有 Amazon Linux AMI 的 amazon-ec2 实例。
- 它有 apache2,在 cgi 上运行 perl dancer 应用程序描述在这里。
我有使用 github API 进行 OAuth 的代码。在我的计算机上运行良好,但最终POST 失败亚马逊。
这看起来像是一个开发问题,但我是 Linux 系统管理员的新手,我想知道我应该如何缩小我的问题范围。
这是我的代码:
my $browser = LWP::UserAgent->new;
#alteast from the browser, seems like this POST never happens.
my $resp = $browser->post($github_post_url,
[
client_id => $client_id,
client_secret => $client_secret,
code => $code,
state => $state
]);
die "error while fetching: ", $resp->status_line
unless $resp->is_success;
my %querystr = parse_query_str($resp->decoded_content);
my $acc = $querystr{access_token};
if($acc) {
#code to retrive access token...
redirect $github_auth_success;
return;
}
return redirect "/fail";#<<< THIS HAPPENS
此应用程序的此处日志(tail /srv/www/domain.com/logs/error.log)显示:
日志目录 /srv/www/domain.com/MyApp/bin/.. 不可写/不可执行,并且无法在 /usr/local/share/perl5/Dancer/Logger.pm 第 16 行对其进行 chmod 。
但是我的 /bin 目录是可写的!而且每个人都可以执行!
- 我如何知道这里到底发生了什么?我是否应该查看其他日志?
- amazon-ec2 会阻止外发邮件吗?安全组中似乎没有可以设置的任何出站规则?
答案1
ls -al /srv/www/domain.com/MyApp/
目录设置的权限是什么bin
?
无论什么用户运行你的 perl 脚本都需要有对该日志目录的读/写访问权限。
你可以chmod
像这样进入目录(字面意思是“更改模式”)chmod +600 /srv/www/domain.com/MyApp/bin
最好将日志目录放在预期的某个地方,/var/log/MyApp
但这不是重点。'var' 代表'变量数据',比如日志。;-)