2017-10-30 28 views
1

Laravel 5.5PHP > 7.0 만 지원하므로 5.6.x과 호환되도록하려면 어떻게해야합니까? 나는 5.6 환경에 있는데, PHP을 업그레이드하는 것은 옵션이 아니며, composer update이 개발 환경에서 언제든지 실행되면 아무 것도 깨뜨리지 않을 것입니다.laravel이 PHP 5.6.x와 호환되도록 보장

기사를 보면 다운 그레이드가 쉽지 않은 것처럼 보입니다. 그래서 나는 어떻게 든 일이 깨지지 않도록하고 싶습니다.

여기에 작곡가 항목/의존성 목록입니다, laravel가 그래서 5.4.*

{ 
    "require": { 
     "php": ">=5.6.4", 
     "laravel/framework": "5.4.*", 
     "laravel/tinker": "~1.0", 
     "laravelcollective/html": "^5.4.0" 
    }, 
    "require-dev": { 
     "fzaninotto/faker": "~1.4", 
     "mockery/mockery": "0.9.*", 
     "phpunit/phpunit": "~5.7" 
    }, 
} 

로 지정이 평균 나는 더 이상 composer update을 실행할 수 있습니까? 아니면 다른 패키지를 업데이트해도 안전합니까? 예 : 위에 지정된 것 및 laravel5.4.36으로 유지됩니까?

작곡가의 사양이 패키지가 5.4.x 범위에 있다는 것을 알았습니다. 확실하게하고 싶습니다. 또한 종속성이 이전 버전과의 호환성을 유지하는 데 안전하지 않을 수도 있습니다. 나는 지금 막 composer update을 잊어야하는지 아니면 더 신중하게 composer.json을 조정해야하는지 궁금합니다.

또한 다음 프로젝트는 PHP 5.6 일 필요가 있습니다. 여기서 사용자 지정 laravel-base에서 복제 할 예정이며, 여기에는 "laravel/framework": "5.4.*",이 항상있을 것입니다. 이게 그렇게 설정되어 있니?

"require": { 
    "php": ">=5.6.4", 
    "laravel/framework": "5.4.*", 
    "laravel/tinker": "1.0.*", 
    "laravelcollective/html": "5.4.*" 
}, 
"require-dev": { 
    "fzaninotto/faker": "1.7.*", 
    "mockery/mockery": "0.9.*", 
    "phpunit/phpunit": "5.7.*" 
}, 

내가 init을 수 있습니다

이 내가의 주요 종속 (+ laravelcollective/html)를 조정 한 내용을 @Eric 브라운의 대답, 그리고 packagist에 대한 몇 가지 연구에 대한 응답으로

입니다 업데이트 다음에 Laravel/vendor 파일의 복사본이있는 새로운 자식 repo를 만든 다음이 파일을 새 디렉토리에 넣으십시오.이 디렉토리는 하위 모듈을 엉망으로 만들고 싶지 않으므로 대신 tarball이 될 수 있습니다. 원래와 함께 커밋.

+0

PHP 5.6은 [더 이상 적극적으로 지원되지 않으며 한 번만 더 보안 업데이트를 제공합니다] (http://php.net/supported-versions.php). 그 시점이 지나면 계속 실행하는 것은 위험하고 무책임합니다. ** 이제 ** PHP 7로 마이그레이션하기위한 계획을 시작할 시간입니다. – ceejayoz

+0

좋은 지적입니다! 그 일에 책임이 있습니다. 내가이 부분을 통제 할 수 없기 때문에 내가 할 수있는 일은 현재의 인프라 스트럭처에서 장기간 안정적인 것을 제공 한 다음 작곡가를 조정하는 것입니다. 업그레이드를 결정할 때 손쉽게 사용할 수 있습니다.악의적으로 readme 또는 어딘가에 귀하의 의견을 참고하십시오! – blamb

+0

'composer.lock' 파일이 소스 컨트롤에 포함되어 있는지 확인하십시오. ** 생성 된 모든 버전의 ** 정확한 ** 버전을 포함하고 있으며, 정확한 버전이 설치되도록'composer install '을 할 수 있습니다. 'composer update'는'.lock' 파일을 새로운 패키지로 업데이트 할 것이므로, 소스 제어에서 이전의'.lock' 파일을 체크 아웃하고 정확한 버전으로 다시 다운 그레이드 할 수 있음을 의미합니다. – ceejayoz

답변

1

기본적으로 Laravel은 composer.json 파일에서 지적했듯이 "laravel/framework": "5.4.*"은 Laravel이 항상 버전 5.4.some_version_number이어야한다고 지정하기 때문에 Laravel의 최신 버전으로 업그레이드하지 않습니다. 이전 버전과의 호환성에 대해 걱정할 필요는 없지만 잠재적 인 버그 나 취약점에 대한 업데이트를 받고 싶다면 4.3.1 대신 4.3. *와 같은 마지막 번호 대신 *를 추가하십시오.

또한 Github 또는 Bitbucket과 같은 Git 저장소를 사용하는 방법을 배우고 현재 버전을 저장하는 것이 매우 유용합니다. 그것들은 버전 제어에 완벽하며 개발이나 업데이트에서 너무 끔찍한 일이 발생하지 않도록 보장합니다. 이것은 개인적으로 내가 생각하는 것보다 더 많은 시간을 절약 해주었습니다.

+0

프레임 워크 자체의 "현재 버전"을 저장하고 싶습니다. 'Vendor'폴더 (예 : .gitignore 또는 별도의 저장소에'Laravel' 폴더 전체를 제거하고 백업 파일로 저장 하시겠습니까? 그리고 별표를 '팅커 (tinker)', '집단 (collective)', '약탈자 (faker)'에 추가하는 것이 좋습니다. – blamb

+0

예를 들어 주로 업데이트가 PHP7 만 사용하는 경우 업그레이드가 잘못 될 수 있기 때문에 가능합니다. 그래도 가능하지만 여전히 가능합니다. 업데이트가 잘못되면 안전이 추가됩니다. –