【问题标题】:How to know which version of Symfony I have?如何知道我拥有的是哪个版本的 Symfony?
【发布时间】:2013-05-26 14:52:52
【问题描述】:

我知道我已经下载了一个Symfony2 项目并开始使用,但我已经多次更新我的供应商,我想知道我拥有哪个版本的 symfony

有什么想法吗?

【问题讨论】:

  • sonata-project/core-bundle 的版本是 2.3.9,sonata-project/admin-bundle 的版本是 2.3.7,根据 composer show 命令。

标签: php symfony


【解决方案1】:

也许这里的答案已经过时了......无论如何,对于我运行 Symfony 4 来说,这很容易 只需从命令行输入symfony -V

【讨论】:

  • 这给出了 Symfony CLI 客户端的版本,而不是 Symfony PHP 组件。
【解决方案2】:

如果你想在页面中动态显示你的 Symfony 2 版本,例如在页脚中,你可以这样做。

创建服务:

<?php

namespace Project\Bundle\DuBundle\Twig;

class SymfonyVersionExtension extends \Twig_Extension
{


 public function getFunctions()
 {
 return array(
 //this is the name of the function you will use in twig
 new \Twig_SimpleFunction('symfony_version', array($this, 'b'))
   );
 }

public function getName()
{
//return 'number_employees';
 return 'symfony_version_extension';
}   

public function b()
{
 $symfony_version = \Symfony\Component\HttpKernel\Kernel::VERSION;
 return $symfony_version;
}
}

在 service.yml 中注册

 dut.twig.symfony_version_extension:
    class: Project\Bundle\DutBundle\Twig\SymfonyVersionExtension
    tags:
        - { name: twig.extension }
    #arguments: []

你可以在任何地方调用它。在 Controller 中,将其包装在 JSON 中,或者在页面示例页脚中

 <p> Built With Symfony {{ symfony_version() }} Version MIT License</p>

现在每次你运行 composer update 来更新你的供应商时,symfony 版本也会在你的模板中自动更新。我知道这有点矫枉过正,但这是我在我的项目中这样做的方式并且它正在工作。

【讨论】:

    【解决方案3】:

    虽然已经有很多好的答案,但我想添加一个尚未提及的选项。使用命令:

    php bin/console about
    

    您可以获得有关当前项目的许多详细信息。第一部分是关于 Symfony 本身,如下所示:

    -------------------- ------------------------------------------- 
     Symfony                                                         
    -------------------- ------------------------------------------- 
     Version              4.2.3                                      
     End of maintenance   07/2019                                    
     End of life          01/2020                                    
    -------------------- ------------------------------------------- 
    

    我发现除了版本号之外的其他信息非常有用。

    还有其他部分提供有关(框架)内核、PHP、环境的详细信息。

    【讨论】:

      【解决方案4】:

      在终端/命令提示符中使用以下命令:

      php bin/console --version
      

      这会给你你的 Symfony 版本。

      【讨论】:

        【解决方案5】:

        对于 Symfony 3.4

        检查这个文件 vendor/symfony/http-kernel/Kernel.php 中的常量

        const VERSION = '3.4.3';
        

        composer show | grep symfony/http-kernel
        

        【讨论】:

          【解决方案6】:

          您也可以通过运行检查 symfony 的版本和所有其他已安装软件包的版本

          composer show
          

          composer show | grep sonata
          

          获取特定软件包的版本,如奏鸣曲等。

          【讨论】:

            【解决方案7】:

            运行app/console --version(对于 Symfony3:bin/console --version),它应该会给你一个很好的主意。在我的一个随机项目中,输出为:

            Symfony version 2.2.0-DEV - app/dev/debug
            

            如果您无法访问控制台,请尝试阅读symfony/src/Symfony/Component/HttpKernel/Kernel.php,其中版本为hardcoded,例如:

            const VERSION         = '2.2.0';
            

            以防万一,console 创建了一个Symfony\Bundle\FrameworkBundle\Console\Application 的实例。在此类构造函数中,它使用Symfony\Component\HttpKernel\Kernel::VERSION 来初始化其父构造函数。

            【讨论】:

            • 或者看看 symfony 开发栏的左上角(仅在开发模式中可见)!
            • 这在谷歌“如何检测 symfony 版本”列表中相当高,但我只有 FTP 访问服务器。什么文件可以表明正在使用什么版本的 Symfony?
            • @HMR 刚刚改进了答案,因此它涵盖了您的情况。希望你觉得它有用! :)
            • 非常感谢,找到了/Symfony/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php
            • 对我来说是bin/console --version
            【解决方案8】:

            如果你尝试使用 symfony 版本

            请尝试

            symfony 2 +

            cmd>php 应用程序/控制台 --version

            symfony 3+

            cmd>php bin/console --version

            例如

            D:project>php bin/console --version

            Symfony 3.2.8 (kernel: app, env: dev, debug: true)
            

            【讨论】:

              【解决方案9】:

              我们可以使用 Kernel.php 文件找到 symfony 版本,但问题是内核的位置会随着版本的变化而变化(最好在项目目录中进行文件搜索)

              在 symfony 3.0 中: my_project\vendor\symfony\symfony\src\Symfony\Component\HttpKernel\Kernel.php

              从控制器/PHP 文件检查

              $symfony_version = \Symfony\Component\HttpKernel\Kernel::VERSION;
              echo $symfony_version; // this will return version; **o/p:3.0.4-DEV**
              

              【讨论】:

                【解决方案10】:

                在您的 Symfony 项目中,您可以通过这种方式获取 PHP 中的值:

                $symfony_version = \Symfony\Component\HttpKernel\Kernel::VERSION;
                

                【讨论】:

                  【解决方案11】:

                  另一种方法是查看Symfony\Component\HttpKernel\Kernel 的源代码,以了解定义const VERSION 的位置。 GitHub上的示例

                  在本地,这将位于vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php

                  【讨论】:

                    【解决方案12】:

                    如果你在app_dev,可以在页面左下角找到symfony版本

                    【讨论】:

                    • 您可能需要通过单击屏幕右下角的 Symfony 徽标来打开调试工具栏;)
                    猜你喜欢
                    • 2013-12-12
                    • 2011-05-15
                    • 1970-01-01
                    • 1970-01-01
                    • 2017-10-09
                    • 2020-07-26
                    • 2012-01-15
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多