2011-03-31 181 views
29

我有一个PHP脚本,我想用bash脚本运行,所以我可以使用Cron运行php脚本每分钟左右。Bash脚本运行php脚本

据我所知,我需要创建bash脚本来处理php脚本,这将允许我使用Cron工具/定时器。在我的PHP脚本开始

#!/pathtoscript/testphp.php 

到目前为止,我被告知我需要把。林不知道该怎么办从这里...

任何意见?谢谢。

回答

58

如果您已经安装PHP作为一个命令行工具(尝试发行php到终端,看看它是否工作),你的家当(#!)行需要看起来像这样:

#!/usr/bin/php 

把这点脚本的顶部,使其可执行(chmod +x myscript.php),并使Cron作业执行该脚本(与执行bash脚本的方式相同)。

您也可以使用php myscript.php

+20

如果你要使用命令行使用量的家当,你真的应该使用“**#!的/ usr/bin中/ env的PHP **”,因为它允许脚本更便携,因为PHP可能并不总是安装在“/ usr/bin/php”中。合理? – Rican7 2013-01-31 23:30:58

0

如果你在bash脚本中没有做任何事情比运行php,你可以简单地使用/ usr/bin/php /path/to/your/file.php命令从cron运行php脚本。

7

你只需要设置:

/usr/bin/php path_to_your_php_file 

在crontab。

+0

我不得不在路径前添加一个php,但这个概念起作用。 – 2012-11-06 04:29:53

4

的bash脚本应该是这样的:

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

您需要的PHP可执行文件(通常在/ usr/bin中),并跑出了PHP脚本的路径。现在你只需要把这个bash脚本放在crontab上,你就完成了!

5

我敢肯定,这样的事情是你在找什么:

#!/bin/sh 

php /pathToScript/script.php 

保存与您所需的脚本的名称(如runPHP.sh),并给它执行权限,那么你可以使用它然而你想要。

编辑:你可能不会使用bash脚本,只需将“php ...”命令添加到crontab中,如果我没有弄错的话。

祝你好运!

+0

在大多数环境中,您不能简单地调用'php youscript.php',但必须找出正确的路径。例如。使用整个路径'/ usr/bin/php myscript.php'或通过调用'which php'并将结果写入稍后使用的变量来动态计算出来。 – Hafenkranich 2017-08-03 16:40:48

10

一个以前的海报说..

如果你已经安装了PHP作为命令行工具......你的家当行需要这个样子(#!):#!/usr/bin/php

虽然这可能是真的......只是因为你可以键入php并不一定意味着这就是PHP的地方....../usr/bin/php是一个常见的位置...但与任何shebang一样...它需要根据您的env量身定制。

一个快速的方法来找出你的特定可执行文件位于您$PATH,尝试.. ➜which -a phpENTER,这对我来说看起来像..

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

第一个是我会得到的默认值,如果我只是在php中键入a t命令提示符...但我可以在任何一个shebang中使用它们,或者直接使用它们...您也可以将可执行文件的名称与env结合使用,但我并不十分了解/信任。 XOXO。

1

一个快速的方法来找出你的特定的可执行文件位于你的$ PATH,尝试。

更快找出php是办法......

whereis php 

我运行debian和上面的命令显示我

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

希望有所帮助。

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