2016-07-15 6 views
6

생산/테스트 환경에서 composer update 명령을 실행할 수 있습니까?PHP 서버에서 작곡가 업데이트를 실행하는 방법은 무엇입니까?

문제는 내가 커맨드 라인에 대한 액세스 권한이 없다는 것입니다.

+2

터미널을 사용할 수 없습니까? – gcampbell

+0

아니요. 이것 때문에 이유가 묻습니다 – WhipsterCZ

+4

[당신은'composer update'를 실행해서는 안되지만 lockfile에'composer install'을] (https://daylerees.com/the-composer-lock-file/) - 분명히 할 수 없습니다. 그것도해야 하나, 언급 할 필요가있다. – Gordon

답변

5

예. 해결책이 있습니다. 하지만 일부 서버 구성을 요구할 수 있습니다 ... 및 일부는 보안 위험으로 인해 기본적으로 금지되어 있습니다!

다운로드 composer.pharhttps://getcomposer.org/download/ -이 Phar()를 통해 추출 및 일반 라이브러리로 실행할 수있는 PHP 아카이브입니다.

새 PHP 파일을 만들어 웹 공용 폴더에 저장하십시오. 작곡가 명령

01을 실행 즉 /public/composer.php

또는 다운로드 https://github.com/whipsterCZ/laravel-libraries/blob/master/public/composer.php


구성

<?php 

//TODO! Some Authorization - Whitelisted IP, Security tokens... 


echo '<pre> 
    ______ 
/____/___ ____ ___ ____ ____ ________ _____ 
// /__ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ 
//___/ /_/////// /_///_/ (__ ) __//
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ UPDATE 
        /_/ 

'; 
define('ROOT_DIR',realpath('../')); 
define('EXTRACT_DIRECTORY', ROOT_DIR. '/composer'); 
define('HOME_DIRECTORY', ROOT_DIR. '/composer/home'); 
define('COMPOSER_INITED', file_exists(ROOT_DIR.'/vendor')); 

set_time_limit(100); 
ini_set('memory_limit',-1); 

if (!getenv('HOME') && !getenv('COMPOSER_HOME')) { 
    putenv("COMPOSER_HOME=".HOME_DIRECTORY); 
} 

에서 추출 작곡가 라이브러리

if (file_exists(EXTRACT_DIRECTORY.'/vendor/autoload.php') == true) { 
    echo "Extracted autoload already exists. Skipping phar extraction as presumably it's already extracted.\n"; 
} 
else{ 
    $composerPhar = new Phar("../composer.phar"); 
    //php.ini set phar.readonly=0 
    $composerPhar->extractTo(EXTRACT_DIRECTORY); 
} 

238,

그러나 더 나은 지역 환경에서 테스트를 마지막으로 종속 구성입니다 composer.lock에 따라,composer install을 수행한다

단 하나의 변화는 또한이 작업을 수행 할 수

$args = array('command' => 'install');

+0

괜찮습니까? – WhipsterCZ

+0

그것은 훨씬 낫다. – Epodax

-2

입니다 : 1) 최신 composer.phar을 다운로드하십시오 2) PHP 스크립트에서 명령을 실행하여 다운로드 한 작곡가 파일을 사용하여

이것은 일시적인 해결책이지만 즉각적인 필요성을 위해 작동 할 수 있습니다.

+0

그것은 정말로 나쁜 생각일지도 모른다. 그러나 이유를 설명 해주세요. 투표 만하지 마라. – MilanG

1

최상의 아이디어는 프로덕션 서버에서 Composer 명령을 실행하지 말고 외부에서 실행하는 것입니다. 배포 스크립트가 있어야합니다. 코드는 서버에 저장해야하며 코드를 업로드 한 후 또는 업로드하기 전에 서버에 종속성을 추가해야합니다.

워크 플로는 다음과 같습니다. 로컬 컴퓨터를 사용하고 repo에서 코드를 체크 아웃하고 composer install을 실행 한 다음 모든 것을 서버에 업로드하십시오. 그건 나에게 사 줄 스크립트 같은 소리 :

git archive master | tar -x -C /deploy/application 
pushd /deploy/application && composer install 
popd 
scp /deploy/application [email protected]:/srv/www/htdocs 

예, 당신은 휴무 사이트를 배포하는 스크립트를 중지, 잘못되는 경우 뭔가 처리 일부 오류가 필요 했어. 또한 rsync을 사용하여 업로드를 최적화하는 것이 좋습니다.

관련 문제