我有一个PHP version: 7.1.8
在Windows本地计算机上顺利运行的Ratchet应用程序。
我尝试使用PHP version 5.5.9
和zmq installed version : 4.0.4
在Linux部署服务器上安装zmq和php绑定。
这是我尝试在服务器上实例化服务器脚本时遇到的错误:
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)
。
由于eventement/eventement
软件包,PHP版本似乎还可以
"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
。
我不知道是什么问题。
答案 0 :(得分:1)
您似乎已经安装了evenement/evenement:3.0
,它需要PHP >=7.0
。我猜您正在使用与运行应用程序不同的PHP版本来更新依赖项。如果您使用PHP 7.1运行composer update
,它将安装可在PHP 7.1上运行的依赖项。我建议在composer.json
中配置platform
,以强制安装PHP 5.5的依赖项,而与本地PHP版本无关。
"config": {
"platform": {
"php": "5.5.9"
}
},
您也可以在应用evenement/evenement:3.0
的约束中禁止composer.json
-如果您希望您的应用在PHP 5上运行,则安装3.0行并没有多大意义:
"evenement/evenement": "^2.0"
但是使用platform
更为可靠-其他软件包也可能再次出现此问题,因此手动进行管理可能会很痛苦。
BTW:您知道PHP 5.5.9确实很旧,并且不再支持5.5行吗?您至少应该真正升级到PHP 5.6。