code

Composer가 버전 X와 버전 Y 사이의 PHP 버전을 요구하도록합니다.

codestyles 2020. 12. 7. 08:09
반응형

Composer가 버전 X와 버전 Y 사이의 PHP 버전을 요구하도록합니다.


서버 (최대 5.3.5) 및 개발 컴퓨터 (최대 5.5.9)에서 실행되는 다양한 PHP 버전이 혼합되어 있습니다.

이제 일부 외부 번들의 최신 버전을 얻기 위해 "작곡자 업데이트"를 수행 한 문제에 직면했습니다. composer.json이 다음과 같이 보이기 때문에

"require": {
        "php": ">=5.3.3",
        .....
    },

PHP 5.5가 필요한 번들이 제공됩니다. 우리 개발 컴퓨터에서는 문제가 없지만 서버에서는 :(

작성기에게 5.3.3과 5.3.5 사이의 PHP 버전을 요구하도록 지시 할 가능성이 있습니까? 또는 최대 사용 가능한 버전?

나는 시도했다

"require": {
        "php": ">=5.3.3, <=5.3.5",
            .....
        },

"require": {
            "php": "<=5.3.5",
                .....
            },

하지만 둘 다 잘되지 않았습니다. "요청한 패키지 PHP를 어떤 버전에서도 찾을 수 없습니다. 패키지 이름에 오타가있을 수 있습니다."라는 메시지가 나타납니다. 오류.

어떤 아이디어? 미리 감사드립니다


사용 가능한 최신 PHP로 개발하고 있으며 매우 오래된 버전으로 프로덕션을 실행하고 있다는 점을 최소한으로 말하는 것이 의문입니다. 이로 인해 발생할 수있는 많은 문제가 발생할 수 있습니다. 보안 패치가 빠졌을뿐만 아니라 버전 5.3.9 및 5.3.23에서 주로 도입 된 PHP 버그 수정으로 인해 일부에서 PHP 동작을 변경하기 때문입니다. 아주 근본적으로 세부 사항. 5.4 또는 5.5의 기능을 실수로 사용할 위험에 대해 이야기하지 않습니다.

그리고 Composer가이 상황을 처리하도록 할 방법이 없습니다. 실행할 때 사용 composer update되는 PHP 버전은 PHP 버전 및 설치된 PHP 확장의 영향을받는 종속성의 해결을 결정합니다.

업데이트에 사용중인 PHP가이 버전 요구 사항과 일치하지 않는 경우 5.3.3에서 5.3.5 사이의 PHP 버전에만 패키지를 사용해야한다고 정의 할 수 없습니다. 사용 된 PHP 버전이 상위 버전 제약 조건을 초과하기 때문에 이러한 패키지는 버전 요구 사항을 충족 할 수 없으며 Composer는 패키지가 발견되지 않았다고보고합니다 (패키지를 확인했다고 말하지 않았지만 다음과 같은 이유로 무시해야했습니다). 버전 제약).

아마도 세 가지 확실한 방법이 있습니다.

  1. 개발 환경을 실제로 사용중인 프로덕션 버전으로 다운 그레이드합니다. 둘 이상이 사용되는 경우 : 가장 오래된 것. 이렇게하면 PHP 버전에 대한 모든 요구 사항이 일치합니다. composer update그런 다음 실행 하면 완료됩니다.

  2. 프로덕션 환경을 업그레이드하십시오. 더 이상의 설명은 필요하지 않지만 PHP 5.5가 5.3보다 훨씬 빠르기 때문에 매우 멋진 PHP 기능을 많이 놓치고있을뿐만 아니라 상당한 성능 향상도 놓치고 있다는 점을 언급해야합니다.

  3. 전역 또는 프로젝트의 composer.json에 "platform.php"구성을 추가합니다. 그러면 Composer가 Composer 자체를 실행하는 PHP 버전을 재정의하고 대신 다른 PHP 버전과의 종속성을 계산하도록 지시합니다. 로컬 설정을 사용 composer config -g platform.php 5.3.5하지 않고 전역 설정 (모든 추가 Composer 실행에 영향을 미침) -g(다른 프로덕션 버전의 PHP로 둘 이상의 프로젝트에서 개발하는 경우 해당 프로젝트의 Composer 작업에만 영향을 미침).


composer.json의 구성 매개 변수를 사용할 수 있기 때문입니다. 다음과 같이 할 수 있습니다.

{
    "name": ".../...",
    "config": {
        "platform": {
            "php": "5.3.5"
        }
    },
    "require": {
        ...
    }
} 

https://getcomposer.org/doc/06-config.md#platform


What about trying the tilde operator

Tilde Operator ~1.2 Very useful for projects that follow semantic versioning. ~1.2 is equivalent to >=1.2,<2.0. For more details, read the next section below.

Next Significant Release (Tilde Operator)#

The ~ operator is best explained by example: ~1.2 is equivalent to

=1.2,<2.0, while ~1.2.3 is equivalent to >=1.2.3,<1.3. As you can see it is mostly useful for projects respecting semantic versioning. A common usage would be to mark the minimum minor version you depend on, like ~1.2 (which allows anything up to, but not including, 2.0). Since in theory there should be no backwards compatibility breaks until 2.0, that works well. Another way of looking at it is that using ~ specifies a minimum version, but allows the last digit specified to go up.

Note: Though 2.0-beta.1 is strictly before 2.0, a version constraint like ~1.2 would not install it. As said above ~1.2 only means the .2 can change but the 1. part is fixed.

Note: The ~ operator has an exception on its behavior for the major release number. This means for example that ~1 is the same as ~1.0 as it will not allow the major number to increase trying to keep backwards compatibility.


Try this (remove comma):

"require": {
    "php": ">=5.3.3 <=5.3.5",
        .....
    },

Remove your composer.lock and vendor directory.

Now place platform option to composer.json

"config": {

    "platform": {
        "php": "7.0"
    }

},

and finally, run command composer install


Is there any possibility to tell composer to require a PHP version between 5.3.3 and 5.3.5?

Yes, there it is one:

Hyphenated Version Range ( - )

Inclusive set of versions. Partial versions on the right include are completed with a wildcard. For example 1.0 - 2.0 is equivalent to >=1.0.0 <2.1 as the 2.0 becomes 2.0.*. On the other hand 1.0.0 - 2.1.0 is equivalent to >=1.0.0 <=2.1.0.

Example: 1.0 - 2.0

https://getcomposer.org/doc/articles/versions.md#hyphenated-version-range-

P.S. I got here from search engine but didn't find an answer here, so when I found it on Composer's site I decided to post it here. Hope this helps someone who got here like I did.

참고URL : https://stackoverflow.com/questions/26277151/force-composer-to-require-php-version-between-version-x-and-version-y

반응형