mmmbaileys
mmmbaileys

Reputation: 1243

Bash script to run php script

I have a php script that I want to be run using a bash script, so I can use Cron to run the php script every minute or so.

As far as I'm aware I need to create the bash script to handle the php script which will then allow me to use the Cron tool/timer.

So far I was told I need to put:

#!/pathtoscript/testphp.php

at the start of my php script. Im not sure what to do from here...

Any advice? Thanks.

Upvotes: 44

Views: 183188

Answers (10)

gzrch
gzrch

Reputation: 1

Create file.php with first line in files:
file.php(#!/bin/php)
file.sh(#!/bin/bash).
Check installed php.Run command in terminal:

which php

If set there will be an answer:

/usr/bin/php

Run file.php with command:

php file.php

if the file has started then you can write this command to file.sh:

#!/bin/bash
run_php=`php file.php`
echo $run_php

Be careful ' and ` different!!!

Upvotes: 0

FDisk
FDisk

Reputation: 9436

Sometimes PHP is placed in non standard location so it's probably better first locate it and then try to execute.

#!/usr/bin/env bash
PHP=`which php`
$PHP /path/to/php/file.php

Upvotes: 25

Luis H Cabrejo
Luis H Cabrejo

Reputation: 324

I found php-cgi on my server. And its on environment path so I was able to run from anywhere. I executed succesfuly file.php in my bash script.

#!/bin/bash
php-cgi ../path/file.php

And the script returned this after php script was executed:

X-Powered-By: PHP/7.1.1 Content-type: text/html; charset=UTF-8

done!

By the way, check first if it works by checking the version issuing the command php-cgi -v

Upvotes: 0

Edward J Beckett
Edward J Beckett

Reputation: 5140

a quick way to find out WHERE YOUR particular executable is located on your $PATH, try.

Even quicker way to find out where php is ...

whereis php

I'm running debian and above command showing me

php: /usr/bin/php /usr/share/php /usr/share/man/man1/php.1.gz

Hope that helps.

Upvotes: 2

Alex Gray
Alex Gray

Reputation: 16473

A previous poster said..

If you have PHP installed as a command line tool… your shebang (#!) line needs to look like this: #!/usr/bin/php

While this could be true… just because you can type in php does NOT necessarily mean that's where php is going to be... /usr/bin/php is A common location… but as with any shebang… it needs to be tailored to YOUR env.

a quick way to find out WHERE YOUR particular executable is located on your $PATH, try.. ➜which -a php ENTER, which for me looks like..

php is /usr/local/php5/bin/php
php is /usr/bin/php
php is /usr/local/bin/php
php is /Library/WebServer/CGI-Executables/php

The first one is the default i'd get if I just typed in php at a command prompt… but I can use any of them in a shebang, or directly… You can also combine the executable name with env, as is often seen, but I don't really know much about / trust that. XOXO.

Upvotes: 13

Sergio Morales
Sergio Morales

Reputation: 2660

I'm pretty sure something like this is what you are looking for:

#!/bin/sh

php /pathToScript/script.php

Save that with your desired script name (such as runPHP.sh) and give it execution rights, then you can use it however you want.

Edit: You might as well not use a bash script at all and just add the "php ..." command to the crontab, if I'm not mistaken.

Good luck!

Upvotes: 9

Bogdan Constantinescu
Bogdan Constantinescu

Reputation: 5356

The bash script should be something like this:

#!/bin/bash
/usr/bin/php /path/to/php/file.php

You need the php executable (usually found in /usr/bin) and the path of the php script to be ran. Now you only have to put this bash script on crontab and you're done!

Upvotes: 4

Spyros
Spyros

Reputation: 48706

You just need to set :

/usr/bin/php path_to_your_php_file

in your crontab.

Upvotes: 9

Costi Ciudatu
Costi Ciudatu

Reputation: 38265

If you don't do anything in your bash script than run the php one, you could simply run the php script from cron with a command like /usr/bin/php /path/to/your/file.php.

Upvotes: 1

Rafe Kettler
Rafe Kettler

Reputation: 76965

If you have PHP installed as a command line tool (try issuing php to the terminal and see if it works), your shebang (#!) line needs to look like this:

#!/usr/bin/php

Put that at the top of your script, make it executable (chmod +x myscript.php), and make a Cron job to execute that script (same way you'd execute a bash script).

You can also use php myscript.php.

Upvotes: 85

Related Questions