2017-09-28 11 views
1

나는 작곡가 설치 의존성에 문제가 있습니다. 우리는 버전 5.6.24 인 php를 사용합니다. phpunit 5.6.4를 설치할 때 doctrine needs php^7을 설치합니다. 이것은 phpunit을 설치하고 설치 한 후에 우리의 부분 작곡가입니다.phpunit 5.6.4가 php 5.6에서 작곡가를 통한 doctrine의 종속성에 대해 작동하지 않습니다.

"packages-dev": [ 
    { 
     "name": "doctrine/instantiator", 
     "version": "1.1.0", 
     "source": { 
      "type": "git", 
      "url": "https://github.com/doctrine/instantiator.git", 
      "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" 
     }, 
     "dist": { 
      "type": "zip", 
      "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", 
      "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", 
      "shasum": "" 
     }, 
     "require": { 
      "php": "^7.1" 
     }, 

왜 그렇습니까? 어떻게 PHP 7에서 5로이 종속성을 수정합니까? 제가 생각하기에, PHP 5에서 phpunit 5.6.4를 사용하는 것은 https://packagist.org/packages/phpunit/phpunit#5.6.4으로 표시 할 수 있습니다. (우리는 세바스챤/수출업자 1.2에 따라 cakephp 2.10.3을 사용합니다. 따라서 5.6.4 phpunit 버전에서만 사용할 수 있습니다.)

우리는 도커를 사용하므로 다음 명령을 라이브러리에 설치합니다.

docker run --rm -it -v $(pwd):/app composer:1.4.1 require --dev phpunit/phpunit:"5.6.4" --ignore-platform-reqs --update-with-dependencies 
+0

'composer.lock'과'vendor' 폴더를 삭제하고 다시 composer install을 실행하십시오. – delboy1978uk

+0

@ delboy1978uk 의견을 보내 주셔서 감사 드리며 변경하지 마십시오. 실제로, 우리는 부분적으로 phpunit을 실행하지만 때때로 오류가 발생하지 않습니다. Fatal 오류 오류 : 구문 오류, 예기치 않은 ':', 예상 ';' [/vendors/doctrine/instantiator/src/Doctrine/Instantiator/Instantiator.php, line 95]에있는 '{'또는 경고 일 수 있습니다. – tkowt

+0

작곡가를 실행중인 컴퓨터에서 php7을 사용할 수 없는지 확인하십시오. –

답변

0

이 문제는 교리 버전 (see http://doctrine-project.org/2017/07/25/php-7.1-requirement-and-composer.html) 및 phpdocumentor/반사 docblock의 호환으로하고 보여로 인해 발생합니다. 명령 작성자를 사용하도록 유효하지 않은 버전을 무효화 할 수 있습니다.

require (or --dev) package:$correct_version 

물론 docker 환경뿐입니다.

작곡가 파일에 ^, ~ 연산자와 같은 일치 설정이있을 수 있으므로 종속성에 따라 라이브러리를 설치하면 이전 버전과 호환되지 않는 요구 사항이 변경되면 종속성이 깨집니다. 따라서 우리는 composer.json에서 정확한 버전을 암시 적으로 정의해야합니다. 감사합니다 @ TonyChiboucas의 코멘트 add your own requirement definition. 내 문제를 해결하는 단서가됩니다.