升级库以获取不同的PHP版本

时间:2018-04-03 14:49:10

标签: php composer-php

我是在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)不满足该要求

我该怎么办?

2 个答案:

答案 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"
},

这可能解释了我的一些麻烦。我正在分享这个作为替代答案,因为它偏离了原来的问题。