рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡рдпрдВ-рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдЪрд░рдг

рдЬреИрд╕рд╛ рдХрд┐ рд╣рд░ рдХреЛрдИ рд╢рд╛рдпрдж рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддрд╛ рд╣реИ, PHP 5.3 рдиреЗ .phar рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрднрд┐рд▓реЗрдЦрд╛рдЧрд╛рд░ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдкреЗрд╢ рдХрд┐рдпрд╛ред рдЬреЛ рд▓реЛрдЧ рдЬрд╛рдирддреЗ рдирд╣реАрдВ рд╣реИрдВ - рдЙрддреНрдХреГрд╖реНрдЯ рд▓реЗрдЦ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рдерд╛рд░ - рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп PHP рдЕрднрд┐рд▓реЗрдЦрд╛рдЧрд╛рд░
рдЧреБрдВрдЬрд╛рдЗрд╢ рдЬреЛ рддреБрд░рдВрдд рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрддреА рд╣реИ, рдкреНрд▓рдЧ-рдЗрди * .phar рдЕрднрд┐рд▓реЗрдЦрд╛рдЧрд╛рд░ рдФрд░ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ / рдЪреМрдЦрдЯреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реАрдПрдордПрд╕ред рдореИрдВ рдмрд╛рдж рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдФрд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рдд рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рди


рд▓рдХреНрд╖реНрдп рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИ, рдЬреЛ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╣реЛрдЧрд╛, рдФрд░ рдЗрд╕рдореЗрдВ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдлрд╛рдЗрд▓реЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреАред рдпрджрд┐ рд╣рдо рдкрд╛рд░рдВрдкрд░рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рджреГрд╢реНрдп рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ - рдпрд╣ рдПрдХ рдЖрд╡реЗрджрди рд╣реИ рдЬреЛ рдПрд╕рдПрдлрдПрдХреНрд╕ (рд╕реНрд╡-рдирд┐рд╖реНрдХрд░реНрд╖рдг рд╕рдВрдЧреНрд░рд╣) рдореЗрдВ рдкреИрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ


PHP 5.4 рдХреЗ рд▓рд┐рдП рд▓реЗрдЦ рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рд▓рд┐рдЦреЗ рдЧрдП рдереЗ (рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ 5.3 рдХреЗ рд▓рд┐рдП рд╕реБрдзрд╛рд░рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ), рдФрд░ PEAR рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЖрд░реНрдХрд╛рдЗрд╡_Tar рдХрд╛ рдЙрдкрдпреЛрдЧ рджреЗрд╢реА * .tar рдЕрднрд┐рд▓реЗрдЦрд╛рдЧрд╛рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕рд░рд▓рддрдо рд╕рдВрд░рдЪрдирд╛ рд▓реЗрдВ:
     build.php
     index.php
     install.php
     readme.txt

рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, install.php рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХреЗрд╡рд▓ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рд╕реНрдЯреЗрдЬ рдкрд░, рдФрд░ build.php рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗрд╡рд▓ рд╕реНрдЯреЗрдЬ рд╕реНрдЯреЗрдЬ рдкрд░ рд╣реЛрддреА рд╣реИред Readme.txt рдлрд╝рд╛рдЗрд▓ рдмрд┐рд▓реНрдб рд╕реНрдЯреЗрдЬ рдкрд░ рдмрдирд╛рдИ рдЬрд╛рдПрдЧреАред

рдЯрд╛рд░ рдмрдирд╛рдПрдВ


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЯрд╛рд░ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рд╕реЗ * .phar рдкреНрд░рд╛рд░реВрдк рдХреЗ рдХреБрдЫ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдореЗрдВ рд╕рд┐рд░рд┐рд▓рд┐рдХ рд╡рд░реНрдгрдорд╛рд▓рд╛ рдХреА рдЕрдпреЛрдЧреНрдпрддрд╛ред рдпрджрд┐ рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП Phar рдпрд╛ PharData рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдкреИрдХрд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдХ рдорд╛рдиреНрдп рджреГрд╢реНрдп рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдЕрдирдкреИрдХ рдХрд░рддреЗ рд╕рдордп рдореВрд▓ рджреГрд╢реНрдп рдореЗрдВ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдПрдХ рдЯрд╛рд░ рд╕рдВрдЧреНрд░рд╣ рдмрдирд╛рдПрдВ:
// PEAR  require_once 'Archive/Tar.php'; //  $tar = new Archive_Tar(__DIR__.'/system.phar.tar'); 

рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди .phar.tar рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ php рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХреЗред
рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЗрдВ рдЬреЛрдбрд╝реЗрдВ:
 //   $tar->createModify( [ 'index.php', 'install.php' ], null, __DIR__ ); //   ,        ,     . // readme.txt,         $tar->addString( 'readme.txt', "This is demo project\nBuilt ".date('dm-Y').' at '.date('H:i') ); 


рдЯрд╛рд░ рдХреЛ рдлреЗрд░ рдореЗрдВ рдмрджрд▓ рджреЗрдВ


рдкрд░рд┐рдгрд╛рдореА рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рддрдерд╛рдХрдерд┐рдд рдЯрд╛рд░-рдЖрдзрд╛рд░рд┐рдд рдлрд╝рд╛рд░ рдмрдирд╛рдПрдВред
 //   $phar = new Phar(__DIR__.'/system.phar.tar'); //  bz2 ,   .phar $phar->convertToExecutable(Phar::TAR, Phar::BZ2, '.phar'); 


рд╕рдВрдЧреНрд░рд╣ рдХреЛ рд╕реНрд╡рдпрдВ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдмрдирд╛рдирд╛


рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рд╡реЗрдм рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рд╕реАрдзреЗ рдлрд╝рд╛рдЗрд▓ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдЦреБрд▓реЗрдЧреАред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдпрд╣ index.php рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрдВрд╕реНрдЯреЙрд▓.php рдЦреЛрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
 //   $phar = new Phar(__DIR__.'/system.phar'); //     $phar->setStub("<?php Phar::webPhar(null, 'install.php'); __HALT_COMPILER();"); // rename(__DIR__.'/system.phar', __DIR__.'/system.phar.php'); 

рдЕрдЬреАрдм .phar.php рдкреНрд░рд╛рд░реВрдк рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рддрд╛ рд╣реИред .Php рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЛ PHP рджреБрднрд╛рд╖рд┐рдпрд╛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ .phar рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реИ, рд╕реНрд░реЛрдд рдХреЛрдб рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдВрдЧреНрд░рд╣ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдПрдбреНрд░реЗрд╕ рдмрд╛рд░ рдореЗрдВ /system.phar.php/index.php рджрд░реНрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

рд╕реНрдерд╛рдкрдирд╛


рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ
 //   ,   ,    $root = substr(pathinfo(__DIR__, PATHINFO_DIRNAME), 7); //   2      (new Phar($root.'/'.pathinfo(__DIR__, PATHINFO_BASENAME)))->extractTo( $root, [ 'index.php', 'readme.txt' ] ); //  ( ) unlink($root.'/'.pathinfo(__DIR__, PATHINFO_BASENAME)); 

рдФрд░ рдирд╛рдпрдХ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдкреВрд░реА рд░рд╕реЛрдИ рдХреА рдХрд▓реНрдкрдирд╛ рдХреА рдЧрдИ рдереА - index.php
 echo 'I was inside the phar archive'; 

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдХреБрдЫ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреА, рдФрд░ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЛ рдЬрд╝рд┐рдк / рдЖрд░рдПрдЖрд░ / рдЯрд╛рд░ / рдЬреАрдЬреА / рдмреАрдЬрд╝ 2 рдЕрднрд┐рд▓реЗрдЦрд╛рдЧрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдмрд▓реНрдХрд┐ рджреЗрд╢реА рдЪрд░рдг рдореЗрдВ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЗрдВ system.phar.php

Source: https://habr.com/ru/post/In148773/


All Articles