我是在PHP / 5.3.3(生产)上运行的遗留项目。我需要将phpmyadmin/motranslator从3.3升级到4.0以应用错误修正。我在本地运行Composer,然后通过FTP上传。
如果我在本地运行PHP / 5.3,则由于SSL错误导致下载失败:
Downloading (failed) Update failed (The "https://api.github.com/repos/symfony/expression-language/zipball/422bf02386ab46f615d1d784b771599357461d73" file could not be downloaded: SSL operation failed with code 1. OpenSSL Error messages: error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version Failed to enable crypto failed to open stream: operation failed)
如果我运行更高版本:
此软件包需要php~5.3.0,但您的PHP版本(7.2.3)不满足该要求
--ignore-platform-reqs
开关安装需要PHP / 7且不会在生产中运行的依赖项。
如果觉得platform
选项是要走的路,但我无法理解:
{
"require": {
"php": "~5.3.0",
"phpmyadmin/motranslator": "^4.0",
"ptlis/conneg": "^4.0"
},
"config": {
"platform": {
"php": "5.3.3"
}
}
}
...会触发这样的一百行:
symfony / expression-language v4.0.7需要php ^ 7.1.3 - >您的PHP版本(7.2.3)被" config.platform.php"覆盖版本(5.3.3)不满足该要求
我该怎么办?
答案 0 :(得分:1)
该错误是由于与PHP安装捆绑在一起的旧版OpenSSL所致。
由于你设置的PHP platform
配置为5.3.3,如果你只是从"php": "~5.3.0"
文件中删除composer.json
,一切都会有效。这将允许composer install
继续并安装与PHP 5.3.3兼容的软件包。
答案 1 :(得分:0)
我怀疑motranslator requirements没有正确考虑依赖关系:
"require": {
"php": ">=5.3.0",
"symfony/expression-language": "^4.0 || ^3.2 || ^2.8"
},
...但是oldest supported expression-language requirements说:
"require": {
"php": ">=5.3.9"
},
这可能解释了我的一些麻烦。我正在分享这个作为替代答案,因为它偏离了原来的问题。