Пример #1
0
<?php

// 创建phar包的辅助脚本
// 使用方式:
//     将本脚本放置到要打包的目录下,修改对应的名字运行即可
$file = 'Sample.phar';
// 包的名称,在stub中也作为入口前缀
$exts = ['php', 'html', 'inc'];
// 需要打包的文件后缀
$dir = __DIR__;
// 需要打包的目录
$phar = new Phar(__DIR__ . '/' . $file, FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::KEY_AS_FILENAME, $file);
// 开始打包
$phar->startBuffering();
// 将后缀名相关的文件打包
foreach ($exts as $ext) {
    $phar->buildFromDirectory($dir, '/\\.' . $ext . '$/');
}
// 把build.php本身摘除
$phar->delete('build.php');
// 设置入口
$phar->setStub("<?php\nPhar::mapPhar('{$file}');\nrequire 'phar://{$file}/portal/index.php';\n__HALT_COMPILER();\n?>");
$phar->stopBuffering();
// 打包完成
echo "Finished {$file}\n";
Пример #2
0
<?php

$fname = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.phar.php';
$pname = 'phar://' . $fname;
$file = "<?php\nPhar::mapPhar('hio');\n__HALT_COMPILER(); ?>";
$files = array();
$files['a'] = 'a';
include 'files/phar_test.inc';
include $fname;
$phar = new Phar($fname);
echo file_get_contents($pname . '/a') . "\n";
$phar->delete('a');
echo file_get_contents($pname . '/a') . "\n";
Пример #3
0
<?php

require_once './oktopus/Oktopus/Engine.php';
Oktopus\Engine::start('/tmp/');
Oktopus\Engine::autoloader()->addPath('./Engine', true, true);
$app = $_GET['app'];
ini_set('phar.readonly', 0);
$phar = new Phar('./' . $app . '.phar', 0, $app . '.phar');
$phar->buildFromDirectory('./');
var_dump(Server::getInstance()->getConfig("urlApplications"));
$dir = new DirectoryIterator(Server::getInstance()->getConfig("urlApplications"));
foreach ($dir as $file) {
    if ($file->getBaseName() != $app) {
        $phar->delete('./applications/');
    }
}
}
$a->convertToExecutable(array());
$a->convertToData(array());
try {
    $b = new PharData(dirname(__FILE__) . '/whatever.tar');
} catch (PharException $e) {
    print_exception($e);
}
try {
    $c = new PharData(dirname(__FILE__) . '/whatever.zip');
} catch (PharException $e) {
    print_exception($e);
}
$b->delete(array());
try {
    $a->delete('oops');
} catch (Exception $e) {
    echo $e->getMessage() . "\n";
}
try {
    $b->delete('oops');
} catch (Exception $e) {
    echo $e->getMessage() . "\n";
}
echo $a->getPath() . "\n";
try {
    $a->setAlias('oops');
} catch (Exception $e) {
    echo $e->getMessage() . "\n";
}
try {
Пример #5
0
        }
        if (is_file($path . $read)) {
            $result[$path . $read] = substr($path . $read, strlen($root));
        } else {
            if (is_dir($path . $read)) {
                $result = array_merge($result, scan($path . $read, $root));
            }
        }
    }
    closedir($open);
    return $result;
}
@unlink('build/imager.phar');
$paths = array('bower_components/Aura.Autoload/src', 'bower_components/console', 'src');
$phar = new Phar('build/imager.phar');
foreach ($paths as $path) {
    foreach (scan($path) as $absolute => $relative) {
        $phar->addFromString($path . '/' . $relative, php_strip_whitespace($absolute));
    }
}
$phar->delete('bower_components/console/.bower.json');
$phar->delete('bower_components/console/.gitignore');
$phar->delete('bower_components/console/CHANGELOG.md');
$phar->delete('bower_components/console/composer.json');
$phar->delete('bower_components/console/LICENSE');
$phar->delete('bower_components/console/README.md');
$phar->delete('bower_components/console/phpunit.xml.dist');
$phar->addFromString('bower_components/Aura.Autoload/autoload.php', php_strip_whitespace('bower_components/Aura.Autoload/autoload.php'));
$phar->addFromString('index.php', '<' . '?php' . PHP_EOL . 'require_once(dirname(__FILE__) . \'/src/cli.php\');');
$phar->compressFiles(Phar::GZ);
echo 'Done.';
Пример #6
0
        $_SERVER['argv'][2] .= '/';
    }
    // Initialize the stub parser
    $stubs = new Stub_Parser();
    $stubs->register('base', './stubs/base.php');
    $stubs->register('addon', './stubs/addon.php');
    $stubs->register('standalone', './stubs/standalone.php');
    // Build the archive
    $phar = new Phar($_SERVER['argv'][3]);
    $phar->startBuffering();
    $phar->buildFromIterator(new KeyFilter(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($_SERVER['argv'][2])), '.svn'), $_SERVER['argv'][2]);
    // Add the stub
    if ($_SERVER['argv'][1] == 'Opl') {
        // Define a stub for the core
        $phar->setStub(file_get_contents($_SERVER['argv'][2] . 'Base.php') . $stubs->create('base'));
        $phar->delete('Base.php');
    } else {
        // Define a stub for other libraries
        $stubs->library = $_SERVER['argv'][1];
        if (isset($phar['Class.php'])) {
            $phar->setStub(file_get_contents($_SERVER['argv'][2] . 'Class.php') . $stubs->create('addon'));
            $phar->delete('Class.php');
        } else {
            $phar->setStub($stubs->create('standalone'));
        }
    }
    $phar->stopBuffering();
    echo $_SERVER['argv'][3] . " created\r\n";
} catch (Exception $e) {
    die('Some error occured: ' . $e->getMessage() . "\n");
}
Пример #7
0
<?php

$dir = __DIR__;
// 需要打包的目录
$file = 'BaiduBce.phar';
// 包的名称, 注意它不仅仅是一个文件名, 在stub中也会作为入口前缀
$phar = new Phar(__DIR__ . '/' . $file, FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::KEY_AS_FILENAME, $file);
// 开始打包
$phar->startBuffering();
$phar->buildFromDirectory($dir);
// 把build.php本身摘除
$phar->delete('PharBuilder.php');
// 设置默认入口
$phar->setStub("<?php\nPhar::mapPhar('{$file}');\nrequire 'phar://{$file}/index.php';\n__HALT_COMPILER();\n?>");
$phar->stopBuffering();
// 打包完成
echo "Finished {$file}\n";
<?php

$p = new Phar(__FILE__);
var_dump(file_exists("phar://" . __FILE__ . "/test.txt"));
$p->delete("test.txt");
clearstatcache();
var_dump(file_exists("phar://" . __FILE__ . "/test.txt"));
echo "ok\n";
__halt_compiler(); ?>
6test.txtшїтHzzoн¶hi
сgµ$Пh±§вуUxBвІGBMB
Пример #9
0
<?php

// 需要打包的文件后缀
$exts = ['php'];
// 包的名称, 注意它不仅仅是一个文件名, 在stub中也会作为入口前缀
$file = 'heresy.phar';
$phar = new Phar(__DIR__ . '/' . $file, FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::KEY_AS_FILENAME, $file);
// 开始
$phar->startBuffering();
// 将后缀名相关的文件打包
foreach ($exts as $ext) {
    $phar->buildFromDirectory(__DIR__, '/\\.' . $ext . '$/');
}
// 去除当前打包文件
$phar->delete(pathinfo(__FILE__, PATHINFO_BASENAME));
// 压缩
$phar->compressFiles(Phar::GZ);
// Phar::NONE
// 设置入口
/*
$phar->setStub("<?php Phar::mapPhar('{$file}'); require 'phar://{$file}/bootstrap.php'; __HALT_COMPILER(); ?>");
*/
$phar->setStub($phar->createDefaultStub('bootstrap/heresy.php'));
// 完成
$phar->stopBuffering();
echo "{$file}\n";