You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何运行PHAR归档中的PHP文件并显示其输出内容?

运行PHAR归档中的PHP脚本并输出内容

好问题!file_get_contents()确实只能读取文件的文本内容,不会解析执行PHP代码——要让PHAR里的test.php运行并输出hello,你可以用以下两种常用方法:

方法一:将test.php设为PHAR的入口脚本,直接运行归档

如果你的PHAR归档还没设置入口脚本,先修改归档的创建逻辑,把test.php指定为默认执行的入口:

<?php
// 创建或修改PHAR归档的脚本
$phar = new Phar('archive.phar');
$phar->addFile('test.php'); // 确保test.php已添加到归档
// 创建默认的Stub,指定test.php为入口
$phar->setStub($phar->createDefaultStub('test.php'));
?>

执行完上面的脚本后,直接在命令行运行PHAR文件即可:

php archive.phar

这样PHP会自动执行归档里的test.php,屏幕上就会输出hello了。

方法二:在外部脚本中通过require/include加载PHAR里的文件

如果不想修改原PHAR归档的入口,你可以写一个外部PHP脚本,通过PHAR流包装器加载并执行test.php:

创建一个名为run_phar.php的文件,内容如下:

<?php
// 通过phar://流包装器加载并执行test.php
require 'phar://archive.phar/test.php';
?>

然后在命令行运行这个外部脚本:

php run_phar.php

这时候PHP会解析执行test.php里的代码,同样能输出hello。

注意事项

  • 如果你需要创建或修改PHAR归档,确保php.ini中的phar.readonly配置项设置为Off(默认可能是On,会阻止修改归档)。
  • 两种方法的核心都是让PHP解析执行脚本内容,而不是单纯读取文本——这就是file_get_contents()达不到预期效果的原因。

内容的提问来源于stack exchange,提问作者DrZorg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:33:31