Search code examples
phpshebangphar

How to make an executable phar?


I want to start a phar script as an executable, directly by doing foo.phar <params> instead of php foo.phar <params>.


Solution

  • It's easy by modifying the default stub (adding the shebang corresponding to php).

    // start buffering. Mandatory to modify stub.
    $phar->startBuffering();
    
    // Get the default stub. You can create your own if you have specific needs
    $defaultStub = $phar->createDefaultStub('index.php');
    
    // Adding files
    $phar->buildFromDirectory(__DIR__, '/\.php$/');
    
    // Create a custom stub to add the shebang
    $stub = "#!/usr/bin/php \n".$defaultStub;
    
    // Add the stub
    $phar->setStub($stub);
    
    $phar->stopBuffering();