【问题标题】:Error 500 on /projects when doing first time install of directus首次安装 directus 时 /projects 出现错误 500
【发布时间】:2020-02-27 20:55:35
【问题描述】:

我已经在我的 VPS 上安装了当前版本的 directus(Debian 10、PHP 7.3、Apache 2.4.38)。

运行基于浏览器的安装时,/logs 中出现错误提示:

[2020-02-27 20:31:59] api[].ERROR: ParseError: 语法错误,意外的“?”,预期 /var/www/clients/client0/web16/web/ 中的变量 (T_VARIABLE)供应商/symfony/translation-contracts/TranslatorTrait.php:44

对我来说,这听起来像是一个错误的 PHP 版本,但 PHP 7.3 正在运行。

我不知道这是否重要,但是忽略这个之后,在你输入数据库连接参数的页面上,POST到/server/projects返回错误500“Internal Server Error”。

我找不到任何日志条目。

  • 如何找到 500 的原因?
  • 是否可以在不安装基于浏览器的情况下配置应用程序?

编辑master切换回v8.5.5,在这个源代码中,有一个trans函数:

/**
 * {@inheritdoc}
 */
public function trans(?string $id, array $parameters = [], string $domain = null, string $locale = null): string
{
    if (null === $id || '' === $id) {
        return '';
    }

    if (!isset($parameters['%count%']) || !is_numeric($parameters['%count%'])) {
        return strtr($id, $parameters);
    }

所以确实有一个类型?string

我的 PHP 版本应该能够处理这个问题,IMO。但在此之前,我有 Debian 9 和 PHP 7.0,我遇到了同样的问题,这就是将 Debian 从 9 升级到 10 的原因。

Debian 9 的编译缓存是否仍然存在?

但我想这不是主要问题。我的问题是我收到一个错误 500,除了 apache error.log 中的 500-log-entry 之外,我看不到任何东西来诊断这个问题。

【问题讨论】:

    标签: php directus


    【解决方案1】:

    当错误报告和日志没有产生任何结果时查找语法错误的一种便捷方法是尝试使用 lint 标志通过命令行运行脚本,例如

    php -l path/to/file.php
    

    【讨论】:

    • 输出为:No syntax errors detected in TranslatorTrait.php。感谢您的帮助!
    • @hgoebl 不用担心。我可能还会检查您的 php cli 是否使用与 apache 模块相同的 php 版本?正如你所说,这听起来像是一个 php 版本问题,因为可空类型是在 7.1 中引入的
    【解决方案2】:

    TranslatorTrait.php 似乎已损坏,因为行 #44 实际上应该是:

    public function trans($id, array $parameters = [], $domain = null, $locale = null)
    

    很明显,应该不会有意外的?。尝试使用以下命令刷新 composer 依赖项:

    rm -rf vendor/*
    

    然后:

    composer clearcache && composer install
    

    【讨论】:

      猜你喜欢
      • 2016-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-19
      • 2017-09-01
      • 2018-04-25
      • 2018-01-31
      相关资源
      最近更新 更多