1

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

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

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

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

我不知道这是否重要,但是忽略这一点后,在您输入数据库连接参数的页面上,对 /server/projects 的 POST 返回错误 500“内部服务器错误”。

我找不到任何日志条目。

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

编辑master从to 切换回来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

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

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

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

4

2 回答 2

2

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

php -l path/to/file.php
于 2020-02-27T21:04:33.337 回答
1

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

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

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

rm -rf vendor/*

接着:

composer clearcache && composer install
于 2020-02-27T22:10:54.850 回答