2016-07-15 18 views
6

क्या हमारे उत्पादन/परीक्षण पर्यावरण पर composer update कमांड चलाने का कोई तरीका है?PHP सर्वर पर संगीतकार अद्यतन कैसे चलाएं?

समस्या यह है कि मेरे पास कमांड लाइन तक पहुंच नहीं है।

+2

आप टर्मिनल का उपयोग नहीं कर सकते? – gcampbell

+0

नहीं मैं नहीं कर सकता। यही कारण है कि – WhipsterCZ

+4

पूछें [आपको 'संगीतकार अद्यतन' नहीं चलाया जाना चाहिए, लेकिन आपके लॉकफ़ाइल पर 'संगीतकार इंस्टॉल' नहीं होना चाहिए] (https://daylerees.com/the-composer-lock-file/) - जाहिर है आप नहीं कर सकते ऐसा करो, लेकिन इसे उल्लेख करने की जरूरत है। – Gordon

उत्तर

5

हां। एक समाधान है लेकिन यह कुछ सर्वर कॉन्फ़िगरेशन की मांग कर सकता है ... और सुरक्षा जोखिमों के कारण इनमें से कुछ डिफ़ॉल्ट रूप से प्रतिबंधित हैं !!

डाउनलोड composer.pharhttps://getcomposer.org/download/ - इस पीएचपी आर्काइव Phar() के माध्यम से निकाला जा सकता है और नियमित रूप से पुस्तकालय के रूप में मार डाला है।

नई PHP फ़ाइल बनाएं और इसे वेब सार्वजनिक फ़ोल्डर में रखें। अर्थात /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); 
} 

संगीतकार कमान

01 चल रहा

लेकिन बेहतर,composer install प्रदर्शन किया जाएगा composer.lock जो पिछले निर्भरता विन्यास स्थानीय पर्यावरण से परीक्षण किया है के अनुसार

केवल परिवर्तन

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

+0

चलाने की ज़रूरत है, क्या यह ठीक है? – WhipsterCZ

+0

यह बहुत बेहतर है :) – Epodax

-2

आप यह भी कर सकते हैं: 1) नवीनतम composer.phar 2 डाउनलोड करें) डाउनलोड संगीतकार फ़ाइल

का उपयोग करके बदतर करने के लिए PHP स्क्रिप्ट से कमांड निष्पादित करें

यह एक अस्थायी समाधान है लेकिन तत्काल आवश्यकता के लिए काम कर सकता है।

+0

यह वास्तव में एक बुरा विचार हो सकता है, लेकिन कृपया बताएं क्यों। बस वोट मत करो। – MilanG

1

सबसे अच्छा विचार उत्पादन सर्वर पर संगीतकार आदेशों को चलाने के लिए नहीं है, लेकिन इसके बाहर। एक परिनियोजन स्क्रिप्ट है - वैसे भी आपके कोड को सर्वर पर रखा जाना चाहिए, और इससे कोई फर्क नहीं पड़ता कि आप कोड अपलोड करने के बाद या अपलोड से पहले सर्वर पर निर्भरता जोड़ते हैं।

वर्कफ़्लो इस तरह होगा: स्थानीय मशीन लें, रेपो से अपना कोड चेकआउट करें, composer install चलाएं, और उसके बाद सर्वर पर सबकुछ अपलोड करें। यही कारण है कि मेरे लिए एक चार लाइन स्क्रिप्ट की तरह लगता है:

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

हाँ, आप एक nonworking साइट की तैनाती से स्क्रिप्ट को रोकने के लिए मामला कुछ में से निपटने के कुछ त्रुटि आवश्यकता होगी गलत हो जाता है,। साथ ही, rsync का उपयोग कर अपलोड अनुकूलित करना एक सुझाव होगा।

संबंधित मुद्दे