簡體   English   中英

升級到 Symfony 5.3 並更新 flex 配方后出錯 (symfony:recipes:install --force)

[英]Error after upgrading to Symfony 5.3 and updading flex recipes (symfony:recipes:install --force)

嘗試在全新/干凈的 symfony 5.2 項目(即composer create-project symfony/website-skeleton:"5.2.*" s5test )上執行“次要”版本升級(5.2 到 5.3)

然后只是添加一個主頁用於測試目的( https://symfony.com/doc/current/page_creation.html

composer.json 中:我將5.2.*的所有實例更改為5.3.* :“symfony/...”:“5.2. ”為“symfony/...”:“5.3. ”“symfony/...” : "^5.2 到 "symfony/...": "^5.3" 等等。

然后我執行composer update "symfony/*" --with-all-dependencies ] 運行正常。

要完成升級,我需要更新六個軟件包的 flex 配方:

  • symfony/路由
  • symfony/安全包
  • symfony/翻譯

一切安裝正常。

但是在安裝 symfony/console 配方( composer recipes:install symfony/console --force -v )之后,我嘗試運行composer update並且cache:clear部分更新失敗並出現錯誤:

執行腳本緩存:清除 [KO] [KO] 腳本緩存:清除返回錯誤代碼 255 !! 通過 post-update-cmd 調用腳本 @auto-scripts

在更新symfony/framework-bundle的 flex 配方后( composer recipes:install symfony/framework-bundle --force -v )我在嘗試訪問應用程序時得到一個空白頁面,而var/log/dev.log沒有任何內容

屏幕

您應該安裝symfony/runtime組件。

更新symfony/console flex 配方后,您應該會收到類似於以下內容的錯誤消息:

在此處輸入圖片說明

這解釋了您需要做什么:

composer require symfony/runtime

安裝該組件,您應該可以正常使用了。

如果遇到其他問題,請密切注意錯誤消息。

此外,我會嘗試在開發/更新時以更詳細的錯誤報告級別運行 PHP,因為顯然您沒有從應用程序獲得任何有用的反饋。

@yivi 他的回答很好,解決了主要問題。 但是在我安裝composer require symfony/runtime之后,我還必須更改 public/index.php 文件。

以前是這樣的:

<?php

use App\Kernel;
use Symfony\Component\ErrorHandler\Debug;
use Symfony\Component\HttpFoundation\Request;

require dirname(__DIR__).'/config/bootstrap.php';

if ($_SERVER['APP_DEBUG']) {
    umask(0000);

    Debug::enable();
}

if ($trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? false) {
    Request::setTrustedProxies(explode(',', $trustedProxies), Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO);
}

if ($trustedHosts = $_SERVER['TRUSTED_HOSTS'] ?? false) {
    Request::setTrustedHosts([$trustedHosts]);
}

$kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']);
$request = Request::createFromGlobals();
$response = $kernel->handle($request);
$response->send();
$kernel->terminate($request, $response);

但在 5.4 中是這樣的:

<?php

use App\Kernel;

require_once dirname(__DIR__).'/vendor/autoload_runtime.php';

return function (array $context) {
    return new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']);
};

現在一切順利且完美。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM