【问题标题】:Error handeling in Silverstripe 4Silverstripe 4 中的错误处理
【发布时间】:2018-03-06 10:57:08
【问题描述】:

我正在使用 Silverstripe 4 并创建了一个带有表单的页面。出了点问题,我只得到一个空白页:

“似乎出现了技术问题。请单击返回按钮,刷新浏览器,然后重试。”

  • 在 .htaccess 中我设置了 php_flag display_errors
  • 在 _config.php 中我设置了 error_reporting(E_ALL);
  • 我在 mysite/_config/app.yml 中设置了这个:

仅: 环境:“开发”

SilverStripe\Security\BasicAuth: whole_site_protected: 是的

现在我想做的就是让 Silverstripe 向我展示错误。在 Silverstripe 3 中唯一要做的事情是:Director::set_environment_type("live");

我必须怎么做才能显示错误?

【问题讨论】:

  • 您是否偶然使用了 PHP-CGI? PHP-CGI 不支持php_flag,如果您的.htaccess 中存在这些配置,则会抛出服务器错误。

标签: silverstripe


【解决方案1】:

在您的.env 文件中,您可以指定一个环境变量。

SS_ENVIRONMENT_TYPE='dev'

【讨论】:

  • 我检查了 .env 并且 SS_ENVIRONMENT_TYPE 已经设置为 dev。还有另一种说法“告诉我错误”吗?
【解决方案2】:

“似乎存在技术问题”一词是 CSRF 失败的通知:https://github.com/silverstripe/silverstripe-framework/blob/7603c6d79841df7712c0d1d5136ec402f3162e0c/lang/en.yml#L60

因此,将 silverstripe 设置为开发模式或调整 php 错误级别在这里无济于事,因为它只是在 csrf 检查失败时输出。

您需要添加令牌或阻止表单处理程序对其进行检查:

https://docs.silverstripe.org/en/4/developer_guides/forms/form_security/#cross-site-request-forgery-csrf

如果表单的所有内容都正确,则错误可能是由 PHP 和会话写入目录的权限问题引起的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-08
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多