생산/테스트 환경에서 composer update
명령을 실행할 수 있습니까?PHP 서버에서 작곡가 업데이트를 실행하는 방법은 무엇입니까?
문제는 내가 커맨드 라인에 대한 액세스 권한이 없다는 것입니다.
생산/테스트 환경에서 composer update
명령을 실행할 수 있습니까?PHP 서버에서 작곡가 업데이트를 실행하는 방법은 무엇입니까?
문제는 내가 커맨드 라인에 대한 액세스 권한이 없다는 것입니다.
예. 해결책이 있습니다. 하지만 일부 서버 구성을 요구할 수 있습니다 ... 및 일부는 보안 위험으로 인해 기본적으로 금지되어 있습니다!
다운로드 composer.phar
https://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');
괜찮습니까? – WhipsterCZ
그것은 훨씬 낫다. – Epodax
입니다 : 1) 최신 composer.phar을 다운로드하십시오 2) PHP 스크립트에서 명령을 실행하여 다운로드 한 작곡가 파일을 사용하여
이것은 일시적인 해결책이지만 즉각적인 필요성을 위해 작동 할 수 있습니다.
그것은 정말로 나쁜 생각일지도 모른다. 그러나 이유를 설명 해주세요. 투표 만하지 마라. – MilanG
최상의 아이디어는 프로덕션 서버에서 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
을 사용하여 업로드를 최적화하는 것이 좋습니다.
터미널을 사용할 수 없습니까? – gcampbell
아니요. 이것 때문에 이유가 묻습니다 – WhipsterCZ
[당신은'composer update'를 실행해서는 안되지만 lockfile에'composer install'을] (https://daylerees.com/the-composer-lock-file/) - 분명히 할 수 없습니다. 그것도해야 하나, 언급 할 필요가있다. – Gordon