perl - 如何在 nginx 错误日志中获取 perl 脚本错误(Nginx with FCGIwrap)

标签 perl error-handling nginx fastcgi spawn-fcgi

我刚刚安装了 fcgiwrap 和 spawn-fcgi 以便能够在 nginx 中使用 perl 脚本。我在我的站点配置中添加了这样的内容:

location ~ \.pl$ {
    gzip off;
    fastcgi_pass unix:/var/run/fcgiwrap.socket;
    include fastcgi_params;
    fastcgi_index index.pl;
}

它可以工作,但如果 perl 代码中有错误,浏览器会显示以下消息:
An error occurred while reading CGI reply (no response received)

而且我无法在 nginx 日志中找到 perl 错误。如果有 perl 编译错误,命令行上的“perl -c”会有所帮助,但它不能帮助我解决运行时错误。

如何告诉 perl 或 fcgiwrap 将错误保存在 nginx 错误日志或其他一些日志文件中?

最佳答案

有许多不错的工具可以捕获 Perl Web 应用程序的运行时错误并将它们展示给您。可以通过各种方式在生产中禁用这些调试工具。他们基本上“评估”了大部分代码,允许他们处理大多数错误。一些例子:

  • Plack::Middleware::Debug , 对于任何 PSGI 应用程序
  • CGI::Application::Plugin::DebugScreen CGI::应用项目
  • Catalyst::Plugin::StackTrace ,Catalyst 的一个选项。
  • CGI::Carp对于较旧的代码或简单的情况,具有“fatalsToBrowser”。
  • 关于perl - 如何在 nginx 错误日志中获取 perl 脚本错误(Nginx with FCGIwrap),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9941322/

    相关文章:

    bash - 在perl中调用bash函数查找替换

    perl - 在 Perl 中从文件中分割字符串

    .net - 在 C++/CLI 包装类中转换异常的最佳实践

    linux - 使用 Ansible 安装 Nginx 到没有互联网连接的目标机器

    php - Laravel 空白白屏 - Centos 7、NGINX 和 PHP7.1

    docker - Google Cloud Run | Angular项目部署为无服务器容器COPY失败:未指定源文件

    perl - 安装 perl 模块 : cpan shell vs rpm/deb

    perl - 如何检查对象是否存在

    c++ - 在 C++ 中包含错误消息的首选方法是什么?

    vb.net - 单独使用的 “Throw”关键字实际上有什么作用