我有一个在PHP/5.3.3(生产(上运行的旧项目。我需要将phpMyAdmin/motranslator从3.3升级到4.0,以应用BugFix。我在本地运行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/表达式语言v4.0.7要求php ^7.1.3->您的php版本(7.2.3(由" config.platform.php"版本(5.3.3(覆盖,不满足该要求
我应该如何继续?
错误是由于旧版本的openssl与您的php安装捆绑在一起。
,由于您的platform
配置为PHP设置为5.3.3,因此,如果您只从composer.json
文件中删除"php": "~5.3.0"
,则一切都应该工作。这将允许composer install
继续并安装与PHP 5.3.3的兼容。
我怀疑motranslator的要求不能正确考虑依赖项:
"require": {
"php": ">=5.3.0",
"symfony/expression-language": "^4.0 || ^3.2 || ^2.8"
},
…但是最古老的支持表达语言要求说:
"require": {
"php": ">=5.3.9"
},
这可能解释了我的一些麻烦。我将其作为替代答案分享,因为它偏离了原始问题。