如何运行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
相关产品推荐
相关产品推荐

