2017-10-12 16 views
15
  • Tôi đang sử dụng đế cắm.
  • Lệnh cập nhật bài (lớp php) đang chạy sau khi cập nhật soạn nhạc.
  • Được làm việc tốt cho đến khi tôi đã làm Laravel cập nhật 5.4-> 5,5 đã tải xuống nào mới gói Symfony
  • soạn bộ nhớ cache rõ ràng đã không giúp
  • nhà soạn nhạc tự động cập nhật không giúp
  • chữ ký nhà soạn nhạc đều bình đẳng

[Symfony \ Component \ Debug \ Exception \ FatalThrowableError] Gọi để phương pháp xác định Illuminate \ Quỹ \ Bảng điều khiển \ ClosureCommand :: setHidden()Composer sử dụng đường dẫn Symfony riêng trong docker (tải tập tin cũ)

Tôi đã lưu các tệp và phương thức này tồn tại trong lớp cha! Tôi đặt điều nhỏ bé này vào người xây dựng những gì đang diễn ra:

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 
} 

Kết quả: composer autoload own, cũ Command.php thay vì điều này từ dự án.

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" 
} 

Tôi muốn biết tại sao lớp symfony không được tải từ dự án nhưng từ một số nơi kỳ diệu và làm thế nào tôi có thể khắc phục điều đó.


Thông tin thêm:

Dockerfile cho php mà thêm nhà soạn nhạc:

# 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 

Composer phần:

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

khi nào lỗi xảy ra? –

+0

thực hiện thông qua 'bản cập nhật soạn nhạc' hoặc' composer post-update-cmd' chứa tập lệnh tạo ứng dụng Laravel. – imclickingmaniac

+0

'Nhà soạn nhạc soạn thảo' nói gì? –

Trả lời

1

Có lẽ chữ ký cho được nhà soạn nhạc không phù hợp, bạn phải biết rằng chữ ký có thể thay đổi, nếu bạn muốn có chữ ký cuối cùng sử dụng url này https://composer.github.io/installer.sig

Sử dụng đoạn mã này để xác minh chữ ký.

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

Cảm ơn bạn đã nhập mã. Tôi đã thay đổi một cái gì đó tương tự. Chữ ký bằng nhau. SIGNATURE PHP: [544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061] SIGNATURE SIG: [544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061] – imclickingmaniac

1

Tôi nghĩ rằng việc chạy lệnh composer self-update cũng sẽ cập nhật chữ ký của nhà soạn nhạc. Ngoài ra tôi sẽ đề nghị hãy thử như sau nếu bạn có quyền truy cập ssh vào máy chủ:

  • Di composer.lock.
  • Xóa vendor thư mục.
  • Run composer install

này cần khắc phục tất cả các vấn đề mà bạn đề cập.

+0

Đây là một trong những điều đầu tiên tôi đã làm. Tôi thậm chí có thể xóa 'gói giao diện điều khiển symfony' và lỗi sẽ xảy ra vì' composer' bằng cách nào đó lưu trữ phiên bản riêng của gói này, không tương thích với một 'Laravel 5.5' sử dụng. Whats vui hơn, tất cả điều này đứng trên docker, do đó, xây dựng container từ đầu nên lau tất cả bộ nhớ cache. Tôi cảm thấy như tôi đã thử tất cả mọi thứ:/ – imclickingmaniac

1

đây là cách tôi cài đặt nhà soạn nhạc (Alpine, php7.1-fpm, tự biên soạn 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');" 

và cố gắng thay đổi của bạn sau khi cài đặt này (laravel 5.5, dockerized và êm chạy)

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

Tất nhiên điều này sẽ chạy không có vấn đề, như oryginal 'ComposerScripts' không tạo ra ứng dụng. Tôi có các kịch bản của riêng tôi sử dụng cài đặt env hiện tại. Ứng dụng khởi động từ kịch bản là đủ để kích hoạt lỗi. Bạn bè của tôi, tôi tin tưởng mạnh mẽ rằng các nhà soạn nhạc tải các tệp riêng thay vì các vấn đề dự án (được lưu trong bộ nhớ cache hoặc có thể được bao gồm trong gói trình soạn thảo). – imclickingmaniac

+0

Chỉ để loại trừ mọi khả năng ... Bạn có thể cung cấp Lớp ComposerScripts của riêng mình không? –

+0

cố gắng gọi "Illuminate \\ Foundation \\ ComposerScripts :: postUpdate" đầu tiên, tập lệnh của bạn sẽ vẫn thực hiện các thay đổi cần thiết. và bạn đã đặt dòng "nhà cung cấp dịch vụ" trong config/app.php chưa? – BitBay

Các vấn đề liên quan