I'm having a little issue with adding shebang #! with my php script on RedHat linux. I have a small piece of test code with shebang added (I've tried different variations as well), but I get the following error message everytime I try to run the script.
Error msg:
-bash: script.php: command not found
Test script:
#!/bin/env php <?php echo "test"; ?>
Shebang #! variations:
#!/usr/bin/php #!/usr/bin/env php
Starting a Script With #! It is called a shebang or a "bang" line. It is nothing but the absolute path to the Bash interpreter. It consists of a number sign and an exclamation point character (#!), followed by the full path to the interpreter such as /bin/bash.
The #! shebang is used to tell the kernel which interpreter should be used to run the commands present in the file. When we run a file starting with #! , the kernel opens the file and takes the contents written right after the #! until the end of the line.
The shebang character sequence is always used in the first line of any file. The statement that mentions the program's path is made by using the shebang character first and then the path of the interpreter program.
In computing, a shebang is the character sequence consisting of the characters number sign and exclamation mark ( #!) at the beginning of a script. It is also called sharp-exclamation, sha-bang, hashbang, pound-bang, or hash-pling.
It should (for most systems) be #!/usr/bin/env php
, but your error isn't related to that.
-bash: script.php: command not found
It says that script.php is not found.
If the problem was the shebang line then the error would say something like:
bash: script.php: /usr/env: bad interpreter: No such file or directory
Presumably, you are typing script.php
and the file is not in a directory on your $PATH
or is not executable.
chmod +x script.php
../script.php
.Instead of 2, you can move/copy/symlink the file to somewhere listed in $PATH
or modify the $PATH
to include the directory containing the script.
If you script is not located in your /usr/local/bin
and is executable, you have to prefix calling your script with php
like this:
php myscrip.php
For shebangs, here is what I use:
Like this:
#!/usr/bin/php
or this:
#!/usr/bin/env php
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With