/** * Initialize the package creator */ function init() { try { if (file_exists($this->path)) { @unlink($this->path); } $ext = strstr(strrchr($this->path, '-'), '.'); if (!$ext) { $ext = strstr(strrchr($this->path, '/'), '.'); if (!$ext) { $ext = strstr(strrchr($this->path, '\\'), '.'); } } if (!$ext) { $ext = strstr($this->path, '.'); } $a = $this->_classname; $this->phar = new $a($this->path); if ($this->phar instanceof Phar) { $this->phar = $this->phar->convertToExecutable($this->format, $this->compression, $ext); } else { $this->phar = $this->phar->convertToData($this->format, $this->compression, $ext); } $this->phar->startBuffering(); if ($this->phar instanceof Phar) { $this->phar->setStub($this->stub); } if ($this->format == Phar::ZIP) { $this->compression = $comp; } } catch (Exception $e) { throw new \Pyrus\Developer\Creator\Exception('Cannot open Phar archive ' . $this->path, $e); } $this->_started = false; }
function buildModulePhar($name, $format = Phar::PHAR, $compression = Phar::NONE, $executable = true, $fake = false) { echo "Building {$name}...\t"; $glob = glob($name.'.*'); if (count($glob) > 0) { foreach ($glob as $file) { if (!is_dir($file)) { unlink($file); } } } $filename = $name . '.phar'; $phar = new Phar($filename); if ($fake) { $phar['Module.php'] = '<?php //no class here'; } else { $phar['Module.php'] = "<?php \n\nnamespace $name;\n\nclass Module\n{}"; } if (false === $executable) { $phar->convertToData($format, $compression); } else { $phar->setDefaultStub('Module.php', 'Module.php'); if ($format !== Phar::PHAR || $compression !== Phar::NONE) { $phar->convertToExecutable($format, $compression); } } if ($format !== Phar::PHAR || $compression !== Phar::NONE) { unlink($filename); } echo "Done!\n"; }
echo $e->getMessage() . "\\n"; } try { Phar::mount("' . addslashes($pname) . '/testit1", "' . addslashes(__FILE__) . '"); } catch (Exception $e) { echo $e->getMessage() . "\\n"; } ?>'; $a->setStub('<?php set_include_path("phar://" . __FILE__); include "index.php"; __HALT_COMPILER();'); Phar::mount($pname . '/testit1', __FILE__); include $fname; // test copying of a phar with mounted entries $b = $a->convertToExecutable(Phar::TAR); $b->setStub('<?php set_include_path("phar://" . __FILE__); include "index.php"; __HALT_COMPILER();'); try { include $fname2; } catch (Exception $e) { echo $e->getMessage(), "\n"; } try { Phar::mount($pname . '/oops', '/home/oops/../../etc/passwd:'); } catch (Exception $e) { echo $e->getMessage(), "\n"; } Phar::mount($pname . '/testit2', $pname . '/testit1');
#!/usr/bin/env php <?php $file = __DIR__ . '/wukka-shortcircuit.phar'; @unlink($file . '.tar.gz'); $phar = new Phar($file); $phar->buildFromDirectory(__DIR__ . '/lib/'); $phar->convertToExecutable(Phar::TAR, Phar::GZ);
} Phar::mungServer('hi'); Phar::createDefaultStub(array()); Phar::loadPhar(array()); Phar::canCompress('hi'); try { $a = new Phar(array()); } catch (TypeError $e) { print_exception($e); } try { $a = new Phar(dirname(__FILE__) . '/files/frontcontroller10.phar'); } catch (PharException $e) { print_exception($e); } $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) {
<?php define('PREFIX', 'orm-generator'); define('PHAR_FILE', PREFIX . '.phar'); define('PHAR_OUTPUT', 'bin' . DIRECTORY_SEPARATOR . PHAR_FILE); define('DEFAULT_STUB', 'phar-generate.php'); define('BUILD_DIR', realpath(__DIR__ . '/build')); define('INCLUDE_EXTENSION', '/\\.php$/'); try { if (file_exists(PHAR_OUTPUT)) { unlink(PHAR_OUTPUT); } /**************************************** * phar file creation ****************************************/ $tarphar = new Phar(PHAR_OUTPUT); $phar = $tarphar->convertToExecutable(Phar::PHAR); $phar->startBuffering(); $phar->buildFromDirectory(BUILD_DIR, INCLUDE_EXTENSION); $stub = $phar->createDefaultStub(DEFAULT_STUB); $phar->setStub("#!/usr/bin/php\n" . $stub); $phar->stopBuffering(); } catch (Exception $e) { echo $e; }
#!/usr/bin/php <?php // Build script to create firewall phars. This is required to be distributed to // remain in compliance with Section 1 of the AGPL. This is defined as a // 'Corresponding Source' of the Firewall module, as it is required to build the // service. $apps = array("voipfirewalld" => array("firewall.php", "common.php", array(__DIR__ . "/../hooks/validator.php", "validator.php"), array(__DIR__ . "/../Lock.class.php", "lock.php"), "modprobe.php")); $dst = __DIR__ . "/../hooks/"; foreach ($apps as $app => $files) { $outfile = "{$app}.phar"; print "Building {$outfile} ... "; @unlink($outfile); $phar = new Phar($outfile, 0, "{$app}.phar"); $phar->convertToExecutable(Phar::TAR); $phar->startBuffering(); foreach ($files as $f) { if (is_array($f)) { $src = $f[0]; $dest = $f[1]; } else { $src = __DIR__ . "/src/{$f}"; $dest = $f; } $phar->addFile($src, $dest); } $start = $files[0]; // Note that ? and > are broken apart to stop syntax highlighting from getting confused. $stub = "#!/usr/bin/env php\n<?php\n\$s='{$start}';\$f=__FILE__;Phar::interceptFileFuncs();set_include_path(\"phar://\$f/\".get_include_path());Phar::webPhar(null, \$s);include \"phar://\$f/\$s\";__HALT_COMPILER(); ?" . ">\n"; $phar->setStub($stub); $phar->compressFiles(Phar::BZ2); $phar->stopBuffering();