确定 PHP 个文件是否 运行 作为 `phar` 存档的一部分
Determine if PHP files is Running as Part of a `phar` archive
有没有办法在运行时确定 PHP 文件是否 运行 作为 phar
存档的一部分?
即,本机实现可能看起来像这样
function isRunningAsPhar()
{
$first_include = get_included_files()[0];
return strpos($first_include, '.phar') !== false;
}
但是,如果用户将 phar 重命名为具有不同的文件扩展名,或者对 phar 进行符号链接以删除文件扩展名,这可能不起作用。
您可以使用函数 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"
?>
这是一个不错的小函数,它将 return 根据文件是否在 PHAR 存档中运行来判断真假
function isPhar() {
return strlen(Phar::running()) > 0 ? true : false;
}
如何使用示例:
if(isPhar()){
echo 'Script is running from PHAR';
} else {
echo 'Script is running otside PHAR';
}
有没有办法在运行时确定 PHP 文件是否 运行 作为 phar
存档的一部分?
即,本机实现可能看起来像这样
function isRunningAsPhar()
{
$first_include = get_included_files()[0];
return strpos($first_include, '.phar') !== false;
}
但是,如果用户将 phar 重命名为具有不同的文件扩展名,或者对 phar 进行符号链接以删除文件扩展名,这可能不起作用。
您可以使用函数 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"
?>
这是一个不错的小函数,它将 return 根据文件是否在 PHAR 存档中运行来判断真假
function isPhar() {
return strlen(Phar::running()) > 0 ? true : false;
}
如何使用示例:
if(isPhar()){
echo 'Script is running from PHAR';
} else {
echo 'Script is running otside PHAR';
}