php应用程序,打包PHP应用程序

我试图从我的Web应用程序创建一个.phar文件.在php documentation’s example之后,我尝试了以下目的.

$srcRoot = __DIR__ . "/../app";

$buildRoot = __DIR__ . "/../build";

$p = new Phar("$buildRoot/build.phar", 0, 'build.phar');

$p->buildFromIterator(

new RecursiveIteratorIterator(

new RecursiveDirectoryIterator($srcRoot)

),

$srcRoot

);

但是我收到以下错误.我对这个错误一无所知.代码有什么问题?

PHP Fatal error: Uncaught exception 'UnexpectedValueException' with message

'Iterator RecursiveIteratorIterator returned a path "D:\site\app" that is

not in the base directory "D:\site\app"'

in D:\site\tools\create-phar.php:7

解决方法:

问题的根源是RecursiveDirectoryIterator还列出了点文件 – .和……

在/ path / to / foo上迭代时,它还列出/ path / to / foo /.和/ path / to / foo / ..进入父目录 – 在基目录之外.

因此,您必须阻止包含“..”文件,这是使用FilesystemIterator::SKIP_DOTS作为DirectoryIterator的第二个参数最容易实现的:

new RecursiveDirectoryIterator($srcRoot, FilesystemIterator::SKIP_DOTS)

标签:php,build,deployment,phar

来源: https://codeday.me/bug/20190528/1171417.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值