2017-10-12 25 views
15
  • मैं डॉकर का उपयोग कर रहा हूं।
  • पोस्ट अपडेट कमांड (PHP वर्ग) संगीतकार अद्यतन के बाद चल रहा है।
  • अच्छी तरह से काम कर रहा था जब तक मैं Laravel अद्यतन किया 5.4-> 5.5 जो नए Symfony संकुल
  • संगीतकार स्पष्ट कैश डाउनलोड किया मदद नहीं की
  • संगीतकार स्वयं अद्यतन मदद नहीं की
  • संगीतकार हस्ताक्षर बराबर हैं

[Symfony \ घटक \ डीबग \ अपवाद \ FatalThrowableError] अपरिभाषित विधि करने के लिए कॉल रोशन \ फाउंडेशन \ कंसोल \ ClosureCommand :: setHidden()संगीतकार डॉकर (पुराने फाइल लोड करना) में अपने सिम्फनी पथ का उपयोग करता है

+०१२३५१६४१०६१

मैं फ़ाइलों को सर्च कर रहा था और यह विधि मूल वर्ग में मौजूद है! मैं निर्माता में यह छोटी बात डाल क्या चल रहा है:

use Symfony\Component\Console\Command\Command as SymfonyCommand; 

class Command extends SymfonyCommand 
{ 
    public function __construct() 
    { 
     $r1 = new \ReflectionClass($this); 
     $r2 = new \ReflectionClass(SymfonyCommand::class); 
     var_dump([$r1->getFileName(), $r2->getFileName()]); 
    } 
// rest of class 
} 

परिणाम: परियोजना से संगीतकार autoload खुद, पुराने Command.php बजाय इस बात का।

array(2) { 
    [0]=> 
    string(91) "/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Console/ClosureCommand.php" 
    [1]=> 
    string(67) "phar:///usr/bin/composer/vendor/symfony/console/Command/Command.php" 
} 

मुझे पता है क्यों सिम्फोनी वर्ग परियोजना से लेकिन कुछ जादू जगह से लोड नहीं है और मुझे लगता है कि कैसे ठीक कर सकते हैं करना चाहते हैं।


अतिरिक्त जानकारी: php कि जोड़ने के लिए

Dockerfile संगीतकार:

# Composer 
ENV PATH "/composer/vendor/bin:$PATH" 
ENV COMPOSER_ALLOW_SUPERUSER 1 
ENV COMPOSER_HOME /composer 
ENV COMPOSER_VERSION 1.4.2 

RUN curl -s -f -L -o /tmp/composer-setup.php https://getcomposer.org/installer 
RUN curl -s -f -L -o /tmp/composer-setup.sig https://composer.github.io/installer.sig 
RUN php -r " \ 
    \$signature_php = hash('SHA384', file_get_contents('/tmp/composer-setup.php')); \ 
    \$signature_sig = trim(file_get_contents('/tmp/composer-setup.sig')); \ 
    echo ' SIGNATURE PHP: [' . \$signature_php . \"]\\n\"; \ 
    echo ' SIGNATURE SIG: [' . \$signature_sig . \"]\\n\"; \ 
    if (\$signature_php !== \$signature_sig) { \ 
     unlink('/tmp/composer-setup.php'); \ 
     echo 'Integrity check failed, installer is either corrupt or worse.' . PHP_EOL; \ 
     exit(1); \ 
    }" 
RUN php /tmp/composer-setup.php --no-ansi --install-dir=/usr/bin cd --filename=composer --version=${COMPOSER_VERSION} \ 
&& rm /tmp/composer-setup.php \ 
&& composer --ansi --version --no-interaction 

संगीतकार हिस्सा:

"post-update-cmd": [ 
    "Modules\\Core\\Composer\\ComposerScripts::postUpdate", 
    "php artisan vendor:publish --tag=public --force", 
    "php artisan optimize" 
], 
+0

त्रुटि कब हुई? –

+0

'संगीतकार अद्यतन' या 'संगीतकार पोस्ट-अपडेट-सीएमडी' के माध्यम से निष्पादित करता है जिसमें लिरावेल एप्लिकेशन बनाने वाली स्क्रिप्ट शामिल होती है। – imclickingmaniac

+0

'संगीतकार निदान' क्या कहता है? –

उत्तर

1

शायद प्राप्त संगीतकार मिलान नहीं है, आप के लिए हस्ताक्षर अगर आप अंतिम प्राप्त करना चाहते हैं तो हस्ताक्षर बदल सकते हैं इस यूआरएल https://composer.github.io/installer.sig

हस्ताक्षर सत्यापित करने के लिए इस स्निपेट का उपयोग करें।

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \ 
      php -r "if (hash_file('SHA384', 'composer-setup.php') === '$(wget -q -O - https://composer.github.io/installer.sig)') { \ 
       echo 'Installer good'; \ 
      } else { \ 
       echo 'Installer corrupt'; die; \ 
      } echo PHP_EOL;" 
+0

आपके कोड के लिए धन्यवाद। मैंने कुछ ऐसा ही बदल दिया। हस्ताक्षर बराबर हैं। हस्ताक्षर पीएचपी: [544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061] हस्ताक्षर SIG: [544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061] – imclickingmaniac

1

मुझे लगता है कि composer self-update आदेश चलाकर संगीतकार के हस्ताक्षर अद्यतन करता है और साथ ही लगता है। इसके अलावा मैं सुझाव दूंगा कि यदि आपके पास सर्वर पर एसएसएच पहुंच है:

  • composer.lock हटाएं।
  • vendor फ़ोल्डर हटाएं।
  • भागो composer install

यह सभी मुद्दों आप का उल्लेख किया ठीक करना चाहिए।

+0

यह पहली बातें मैंने किया था से एक था। मैं 'सिम्फनी कंसोल पैकेज' को भी हटा सकता हूं और त्रुटि उत्पन्न होगी क्योंकि 'संगीतकार' किसी भी तरह से इस पैकेज का अपना संस्करण संग्रहीत करता है, एक 'लार्वा 5.5' उपयोगों के अनुरूप नहीं है। क्या अधिक मजाकिया है, यह सब डॉकर पर खड़ा है, इसलिए खरोंच से कंटेनरों का निर्माण सभी कैश को मिटा देना चाहिए। मुझे लगता है कि मैंने सब कुछ करने की कोशिश की:/ – imclickingmaniac

1

इस प्रकार मैं संगीतकार स्थापित करता हूं (अल्पाइन, php7।1-एफ पी एम, स्वयं संकलित nginx)

EXPECTED_COMPOSER_SIGNATURE=$(wget -q -O - https://composer.github.io/installer.sig) && \ 
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \ 
php -r "if (hash_file('SHA384', 'composer-setup.php') === '${EXPECTED_COMPOSER_SIGNATURE}') { echo 'Composer.phar Installer verified'; } else { echo 'Composer.phar Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" && \ 
php composer-setup.php --install-dir=/usr/bin --filename=composer && \ 
php -r "unlink('composer-setup.php');" 

और इस (laravel 5.5 करने के लिए अपने पद से स्थापित बदलने की कोशिश, dockerized और सुचारू रूप से चलाने)

"post-update-cmd": [ 
     "Illuminate\\Foundation\\ComposerScripts::postUpdate", 
     "php artisan optimize" 
     ..... 
+0

बेशक यह कोई समस्या नहीं चलेगा, क्योंकि मूल 'संगीतकार' एप्लिकेशन नहीं बना रहा है। मेरे पास अपनी खुद की स्क्रिप्ट हैं जो वर्तमान एनवी सेटिंग्स का उपयोग करती हैं। स्क्रिप्ट से बूटस्ट्रिंग एप्लिकेशन त्रुटि ट्रिगर करने के लिए पर्याप्त है। मेरे दोस्तों, मुझे दृढ़ विश्वास है कि यह कंपोज़र परियोजनाओं की समस्या के बजाय अपनी फाइलें लोड कर रहा है (कैश या शायद संगीतकार पैकेज में शामिल)। – imclickingmaniac

+0

बस हर संभावना को रद्द करने के लिए ... क्या आप अपनी खुद की संगीतकार कक्षा प्रदान कर सकते हैं? –

+0

पहले "रोशनी \\ फाउंडेशन \\ संगीतकार :: पोस्टअपडेट" को कॉल करने का प्रयास करें, आपकी स्क्रिप्ट अभी भी आवश्यक परिवर्तन करेगी। और आपने कॉन्फ़िगर/app.php में अपना "सेवा प्रदाता" लाइन डाली? – BitBay

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