I'm shipping a new side project as .phar file, php-sqllint.phar.
The phar stub has a shebang line so that I can call it without explicitly running PHP:
When making the file executable with chmod +x, you can simply execute it:
$ ./php-sqllint.phar --version ./php-sqllint.phar version 0.0.2.
No extension
Then I wanted to get rid of the .phar extension, because
$ ./php-sqllint file.sql
reads nicer than
$ ./php-sqllint.phar file.sql
Simply renaming the phar file resulted in an error:
PHP Warning: require(phar:///usr/bin/php-sqllint/bin/phar-php-sqllint.php): failed to open stream: phar error: invalid url or non-existent phar "phar:///usr/bin/php-sqllint/bin/phar-php-sqllint.php" in /usr/bin/php-sqllint on line 15
I found the solution to this problem in phpunit bug #734 : Use Phar::mapPhar() in the stub and include the following code with phar://$alias:
#!/usr/bin/env php <?php Phar::mapPhar('php-sqllint.phar'); require 'phar://php-sqllint.phar/bin/phar-php-sqllint.php'; ?>
You have to use the same alias name that was used to create the phar file.