确定PHP文件是否作为“phar”存档的一部分运行

确定PHP文件是否作为“phar”存档的一部分运行,php,phar,Php,Phar,有没有办法在运行时确定PHP文件是否作为phar存档的一部分运行 i、 例如,本机实现可能看起来像这样 function isRunningAsPhar() { $first_include = get_included_files()[0]; return strpos($first_include, '.phar') !== false; } 但是,如果用户重命名了phar以使用不同的文件扩展名,或者将phar符号链接以删除文件扩展名,则这可能不起作用。您可以使用函数pha

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

i、 例如,本机实现可能看起来像这样

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

但是,如果用户重命名了phar以使用不同的文件扩展名,或者将phar符号链接以删除文件扩展名,则这可能不起作用。

您可以使用函数
phar::running()为您提供已执行的phar归档的路径。如果设置了路径,则其为存档

手册中的示例:

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

这里有一个很好的小函数,它将根据文件是否在PHAR存档中运行返回true或false

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

如何使用示例:

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