Инстанцирование храпового сервера: «Неподдерживаемый объявляют 'strict_types'" - PullRequest
0 голосов
/ 05 сентября 2018

У меня на локальном компьютере с Windows работает приложение Ratchet с PHP version: 7.1.8.

Я пытался установить привязку zmq и php на сервере развертывания Linux с PHP version 5.5.9 и zmq installed version : 4.0.4.

Вот ошибка, которую я получаю, когда пытаюсь создать экземпляр серверного скрипта на сервере:

org@ktm /var/www/html/project_dir (pusher)$ php index.php "/report-test"

PHP Warning:  Unsupported declare 'strict_types' in /var/www/html/Test_Gbd_Portal/gbdportal-new/vendor/evenement/evenement/src/Evenement/EventEmitter.php on line 1
PHP Warning:  Unsupported declare 'strict_types' in /var/www/html/Test_Gbd_Portal/gbdportal-new/vendor/evenement/evenement/src/Evenement/EventEmitterInterface.php on line 1
PHP Warning:  Unsupported declare 'strict_types' in /var/www/html/Test_Gbd_Portal/gbdportal-new/vendor/evenement/evenement/src/Evenement/EventEmitterTrait.php on line 1
PHP Parse error:  syntax error, unexpected ':', expecting ';' or '{' in /var/www/html/Test_Gbd_Portal/gbdportal-new/vendor/evenement/evenement/src/Evenement/EventEmitterTrait.php on line 93
HTTP Fatal error: syntax error, unexpected ':', expecting ';' or '{' (GET /report-test)
<!DOCTYPE html>

Вот часть composer.json file:

"require": {
"phpmailer/phpmailer": "5.2.9",
"phpoffice/phpexcel": "1.8.0",
"raveren/kint":"1.0.x-dev",
"jaspersoft/rest-client": "dev-master",
"cboden/ratchet": "dev-master",
"react/zmq": "dev-master"
},

"минимальная стабильность": "dev"

И composer.lock:

"name": "react/zmq",
        "version": "dev-master",
        "source": {
            "type": "git",
            "url": "https://github.com/friends-of-reactphp/zmq.git",
            "reference": "13dec0bd2397adcc5d6aa54c8d7f0982fba66f39"
        },
        "dist": {
            "type": "zip",
            "url": "https://api.github.com/repos/friends-of-reactphp/zmq/zipball/13dec0bd2397adcc5d6aa54c8d7f0982fba66f39",
            "reference": "13dec0bd2397adcc5d6aa54c8d7f0982fba66f39",
            "shasum": ""
        },
        "require": {
            "evenement/evenement": "^3.0 || ^2.0",
            "ext-zmq": "*",
            "php": ">=5.4.0",
            "react/event-loop": "^1.0 || ^0.5 || ^0.4"
        },
        "require-dev": {
            "ext-pcntl": "*",
            "phpunit/phpunit": "~4.8.35 || ~5.7 || ~6.4"
        },
        "type": "library",
        "autoload": {
            "psr-4": {
                "React\\ZMQ\\": "src"
            }
        },

В этих файлах проблема выглядит следующим образом:

vendor/.../src/Evenement\:
<?php declare(strict_types=1);

namespace Evenement;

class EventEmitter implements EventEmitterInterface
{
    use EventEmitterTrait;
}

и аналогичные с двумя другими файлами содержат это: declare(strict_types=1).

Версия PHP вроде бы в порядке с пакетом eventement/eventement, начиная с

"require": {
            "evenement/evenement": "^3.0 || ^2.0",
            "ext-zmq": "*",
            "php": ">=5.4.0",
            "react/event-loop": "^1.0 || ^0.5 || ^0.4"
        },

он должен работать на php >=5.4.0, а на сервере php5.5.9.

Я не могу понять, в чем проблема.

1 Ответ

0 голосов
/ 05 сентября 2018

Похоже, вы установили evenement/evenement:3.0, для чего требуется PHP >=7.0. Я полагаю, что вы обновляете свои зависимости, используя версию PHP, отличную от используемой для запуска вашего приложения. Если вы запустите composer update с использованием PHP 7.1, он установит зависимости, которые работают на PHP 7.1. Я предлагаю настроить platform в вашем composer.json для принудительной установки зависимостей для PHP 5.5 независимо от локальной версии PHP.

"config": {
    "platform": {
        "php": "5.5.9"
    }
},

Вы также можете запретить evenement/evenement:3.0 в ограничениях composer.json вашего приложения - установка строки 3.0 не имеет большого смысла, если вы хотите, чтобы ваше приложение работало на PHP 5:

"evenement/evenement": "^2.0"

Но использование platform более надежно - эта проблема может возвращаться и для других пакетов, и управление этим вручную может быть реальной болью.


Кстати: вы знаете, что PHP 5.5.9 действительно старый и строка 5.5 больше не поддерживается? Вы должны действительно обновить до PHP 5.6 по крайней мере.

...