【问题标题】:Sudden syntax error after deployment部署后突然出现语法错误
【发布时间】:2017-08-05 08:27:16
【问题描述】:

我有一个正在运行的 symfony 项目。我将它放在一个私有的 bitbucked 存储库中,并且该网站在本地运行没有问题。

今天我尝试将项目部署到外部服务器 linuxpl.com

采取的步骤包括:

  • 安装作曲家
  • 添加mysql数据库
  • 运行 git clone 以将数据放入适当的位置
  • 在文件夹上运行composer install 以安装所有内容并连接到数据库
  • 已清除缓存
  • 设置项目根为....domain/project_name/web

但是,在完成所有这些步骤后,当使用常规 server:run 运行网站时,我遇到了这个奇怪的错误:

解析错误:语法错误,意外的 '.'在 /home/spirifer/domains/surowcewobiektywie.pl/konkurs/vendor/twig/twig/lib/Twig/Extension/Core.php 1571 行

不确定这是否重要,但提到的代码部分在我的本地文件中如下所示:

 // Some objects throw exceptions when they have __call, and the method we try
    // to call is not supported. If ignoreStrictCheck is true, we should return null.
    try {
        $ret = $object->$method(...$arguments);
    } catch (BadMethodCallException $e) {
        if ($call && ($ignoreStrictCheck || !$env->isStrictVariables())) {
            return;
        }
        throw $e;
    }

本地版本与服务器上的版本没有区别

我的本​​地机器有 PHP 7.0.9,而删除服务器有 PHP 7.0.14

我该如何解决这个问题?

【问题讨论】:

    标签: symfony deployment twig composer-php


    【解决方案1】:

    PHP 5.6 adds Variadic functions,带有“...”。但是,Twig v1.x 只需要使用 PHP 5.2.7 或更高版本。

    如果您没有明确更新到 Twig 2.0,则很有可能您在 composer 文件中使用了“death star”版本约束 - “*”。这允许不受控制的版本更新到最新版本。如果是这种情况,您将需要更新您的 PHP 版本,或者至少只需要以前版本的 Twig/twig,“^1.32”将是 Twig 版本 1 系列中的最新版本。

    【讨论】:

    • 我的树枝是 composer.json 中的"twig/twig": "^1.0||^2.0", 我添加了关于 php 版本的问题的编辑,请查看
    • 像说的那样设置它并运行 composer update 解决了这个问题。谢谢!
    • 顺便说一句,您收到该错误表明您的系统上安装了多个 PHP 版本,并且 Symfony 命令未使用 PHP 7.x 二进制文件执行。
    猜你喜欢
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多