Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Composer在docker中使用自己的Symfony路径(加载旧文件) 我在用docker 更新后命令(php类)在composer更新后运行 在我完成Laravel更新5.4->5.5并下载了新的Symfony软件包之前,它一直运行良好 作曲家清除缓存没有帮助 作曲家自我更新没有帮助 作曲家签名是平等的_Php_Laravel_Symfony_Docker_Composer Php - Fatal编程技术网

Composer在docker中使用自己的Symfony路径(加载旧文件) 我在用docker 更新后命令(php类)在composer更新后运行 在我完成Laravel更新5.4->5.5并下载了新的Symfony软件包之前,它一直运行良好 作曲家清除缓存没有帮助 作曲家自我更新没有帮助 作曲家签名是平等的

Composer在docker中使用自己的Symfony路径(加载旧文件) 我在用docker 更新后命令(php类)在composer更新后运行 在我完成Laravel更新5.4->5.5并下载了新的Symfony软件包之前,它一直运行良好 作曲家清除缓存没有帮助 作曲家自我更新没有帮助 作曲家签名是平等的,php,laravel,symfony,docker,composer-php,Php,Laravel,Symfony,Docker,Composer Php,[Symfony\Component\Debug\Exception\FatalThrowableError]调用 未定义方法 Illumb\Foundation\Console\ClosureCommand::setHidden() 我正在整理文件,这个方法存在于父类中!我把这个小东西放在构造器里发生了什么: use Symfony\Component\Console\Command\Command as SymfonyCommand; class Command extends Symfo

[Symfony\Component\Debug\Exception\FatalThrowableError]调用 未定义方法 Illumb\Foundation\Console\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
}
结果:composer自动加载自己的、较旧的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"
}
我想知道为什么symfony类不是从project加载的,而是从某个神奇的地方加载的,以及我如何修复它。


其他信息:

用于添加composer的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"
],

可能Get composer的签名不匹配,您必须知道签名可能会更改,如果要获取最后一个签名,请使用此url

使用此代码段验证签名

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

我认为运行
composer self-update
命令也会更新作曲家的签名。此外,如果您具有对服务器的ssh访问权限,我建议您尝试以下操作:

  • 删除
    composer.lock
  • 删除
    供应商
    文件夹
  • 运行
    composer安装

这将解决您提到的所有问题。

这是我安装composer(Alpine、php7.1-fpm、自编nginx)的方式

并尝试将您的后期安装更改为此(laravel 5.5,已对接且运行平稳)


谢谢你的代码。我确实把我的名字改成了类似的东西。签名是平等的。签名PHP:[544E09EE996CDF60ECE3804ABC52599C22B1F40F43243C44D44FDD586475CA9813A858088FFBC1F233E9B180F061]签名签名:[544E09EE996CDF60ECE3804ABC52599C22B1F40F43243C44D44FDD586475CA9813A858088FFBC1F233E9B180F061]错误是什么时候发生的?通过
composer update
composer post update cmd
执行,该命令包含构建Laravel应用程序的脚本。
composer diagnose
说什么?一切正常composer.json文件中的post update cmd看起来如何?当然,这不会出现问题,因为oryginal
Composer脚本不创建应用程序。我有自己使用当前环境设置的脚本。从脚本引导应用程序足以触发错误。我的朋友们,我坚信这是composer加载自己的文件而不是项目的问题(缓存或可能包含在composer包中)。。。您可以提供自己的Composer脚本类吗?请尝试先调用“Illumb\\Foundation\\Composer脚本::postUpdate”,您的脚本仍将进行所需的更改。您是否在config/app.php中添加了“服务提供商”行?这是我做的第一件事之一。我甚至可以删除
symfony控制台软件包
,因为
composer
以某种方式存储了此软件包的自己版本,与一个
Laravel 5.5
使用的软件包不兼容,所以会出现错误。更有趣的是,所有这些都站在docker上,所以从头开始构建容器应该会清除所有缓存。我觉得我什么都试过了:/
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');"
    "post-update-cmd": [
        "Illuminate\\Foundation\\ComposerScripts::postUpdate",
        "php artisan optimize"
         .....