【问题标题】:Determine if PHP files is Running as Part of a `phar` archive确定 PHP 文件是否作为 `phar` 存档的一部分运行
【发布时间】:2017-09-28 18:22:19
【问题描述】:

有没有办法在运行时确定 PHP 文件是否作为 phar 存档的一部分运行?

即,本机实现可能看起来像这样

function isRunningAsPhar()
{
    $first_include = get_included_files()[0];
    return strpos($first_include, '.phar') !== false;
}

但是,如果用户将 phar 重命名为具有不同的文件扩展名,或者对 phar 进行符号链接以删除文件扩展名,这可能不起作用。

【问题讨论】:

    标签: php phar


    【解决方案1】:

    您可以使用函数Phar::running(); 为您提供已执行的 phar 存档的路径。如果设置了路径,则它是一个存档。

    https://secure.php.net/manual/en/phar.running.php

    手册示例:

    <?php
    $a = Phar::running(); // $a is "phar:///path/to/my.phar"
    $b = Phar::running(false); // $b is "/path/to/my.phar"
    ?>
    

    【讨论】:

      【解决方案2】:

      这是一个不错的小函数,它会根据文件是否在 PHAR 存档中运行而返回真或假

      function isPhar() {
        return strlen(Phar::running()) > 0 ? true : false;
      }
      

      链接:http://lesichkov.co.uk/article/20170928111351676090/handy-php-functions-when-working-with-phar-archives

      如何使用示例:

      if(isPhar()){
          echo 'Script is running from PHAR';
      } else {
          echo 'Script is running otside PHAR';
      }
      

      【讨论】:

        猜你喜欢
        • 2013-02-20
        • 2011-03-11
        • 1970-01-01
        • 2018-10-01
        • 1970-01-01
        • 2017-02-02
        • 2014-12-30
        • 1970-01-01
        • 2013-10-31
        相关资源
        最近更新 更多