ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

打包PHP应用程序

2019-05-28 14:20:15  阅读:366  来源: 互联网

标签:php build deployment phar


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

<?php
$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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有