Как исправить ошибку Parse error: синтаксическая ошибка, неожиданное '=' в Cell.php

Я развернул свой источник laravel, который интегрировал пакет maatwebsite внутри, у меня есть некоторый экспорт excel в моем проекте. Он отлично работает на локальном хосте xampp, но когда я развертываю его на виртуальном сервере, он всегда возвращает ошибку:

message: "Parse error: syntax error, unexpected '='"
exception: "Symfony\Component\Debug\Exception\FatalThrowableError"
file: "/var/www/src/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/Cell.php"
line: 517

Я настроил php7.1 и требую composer.json:

"require": {
        "php": ">=7.0.0",
        "ext-json": "*",
        "fideloper/proxy": "~3.3",
        "laravel/framework": "5.5.*",
        "laravel/tinker": "~1.0",
        "laravelcollective/html": "^5.4.0",
        "maatwebsite/excel": "^3.1"
    }

Кто подскажет как решить эту проблему???


person Steven Dang    schedule 02.04.2020    source источник
comment
Деструктуризация симметричного массива — это функция PHP 7.1. Ваш сервер, вероятно, работает под управлением PHP 7.0   -  person Phil    schedule 02.04.2020
comment
Деструктуризация симметричного массива @: я использовал команду php -i, затем она показала php7.1.33   -  person Steven Dang    schedule 02.04.2020
comment
Вы используете php -i на своем сервере? У него может быть установлено несколько экземпляров PHP, и CLI использует версию, отличную от FPM/mod-php. Самый простой способ проверить это добавить файл info.php с <?php phpinfo(); и проверить его онлайн.   -  person Phil    schedule 02.04.2020
comment
@Phil: я запустил эту команду, и она говорит мне php7.1.33   -  person Steven Dang    schedule 02.04.2020
comment
Это был файл с phpinfo(), запущенный через ваш HTTP-сервер?   -  person Phil    schedule 02.04.2020
comment
Я попытался удалить php и переустановить, теперь это работает: D   -  person Steven Dang    schedule 03.04.2020


Ответы (1)


не используйте = в композиторе, вы должны использовать ^ или ~

Полное объяснение находится по адресу Диапазон версий Tilde (~). и Диапазон версий каретки (^)

Оператор ~ лучше всего объяснить на примере: ~1.2 эквивалентно ›=1.2 ‹2.0.0, а ~1.2.3 эквивалентно ›=1.2.3 ‹1.3.0. Как вы можете видеть, это в основном полезно для проектов, учитывающих семантическое управление версиями.

Оператор ^ ведет себя очень похоже, но он ближе к семантическому управлению версиями и всегда разрешает непрерывные обновления. Например, ^1.2.3 эквивалентно ›=1.2.3 ‹2.0.0, так как ни один из выпусков до 2.0 не должен нарушать обратную совместимость. Для версий до 1.0 он также действует с учетом безопасности и обрабатывает ^0,3 как ›=0,3,0 ‹0,4,0.

person Aswita Hidayat    schedule 02.04.2020
comment
Проблема в Cell.php, а не в composer.json - person Steven Dang; 02.04.2020