我有一个php脚本,想通过bash脚本运行它,这样我就可以使用Cron每分钟运行该php脚本。
据我所知,我需要创建bash脚本来处理php脚本,然后才能使用Cron工具/定时器。
到目前为止,我被告知需要添加以下内容:
#!/pathtoscript/testphp.php
在我的PHP脚本的开头,我不确定该怎么做...
有什么建议吗?谢谢。
php
检查是否有效),那么你的shebang(#!
)行应该如下所示:#!/usr/bin/php
将这段代码放在脚本的顶部,然后使其可执行(chmod +x myscript.php
),并创建一个 Cron 任务来执行该脚本(与执行 Bash 脚本的方式相同)。
您也可以使用 php myscript.php
命令来运行脚本。
env
可能根本找不到它。多个 SO Q/A 解决了这个问题(例如 https://unix.stackexchange.com/q/29608)。 - EML有时PHP文件可能被放在非标准位置,因此最好先找到它再尝试执行。
#!/usr/bin/env bash
PHP=`which php`
$PHP /path/to/php/file.php
/usr/bin/env php
正是这样做的(这就是使用 env
的主要目的),而且还有一个额外的优点,即您可以直接将您的 PHP 代码放在 Bash 脚本中,而不必编写另一个 'file.php' 文件。 - EML之前的回复者说过…
如果您已经安装了PHP命令行工具… 您的shebang (#!) 行需要像这样:
#!/usr/bin/php
虽然这是可能正确的... 只是因为您可以输入php
并不一定意味着它就在那里... /usr/bin/php
是一个常见的位置... 但与任何shebang一样... 它需要适合您的env
。
找出您特定可执行文件在$PATH
中位于哪里的快速方法,尝试 ...
➜which -a php
ENTER,对我来说看起来像这样...
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时获得的默认值... 但我可以在shebang或直接使用任何一个... 您还可以将可执行文件名称与env
组合使用,通常可以看到,但我不太了解/信任那个。XOXO。
你只需要设置:
/usr/bin/php path_to_your_php_file
在你的crontab中。
我很确定你想要的是这样的:
#!/bin/sh
php /pathToScript/script.php
将这个脚本保存为你想要的名称(比如runPHP.sh),并赋予它执行权限,然后你可以随意使用它。
编辑:如果我没弄错的话,你也可以根本不使用bash脚本,而是将“php…”命令添加到crontab中。
祝你好运!
php yourscript.php
,而是必须找出正确的路径。例如,使用完整路径 /usr/bin/php myscript.php
或通过调用 which php
动态确定路径,并将结果写入稍后使用的变量中。 - Hafenkranich#!/bin/bash
/usr/bin/php /path/to/php/file.php
快速查找特定可执行文件在$PATH中的位置,尝试使用以下命令。
更快捷的方法查找php
所在位置...
whereis php
php: /usr/bin/php /usr/share/php /usr/share/man/man1/php.1.gz
whereis
,您需要手动安装。 - Edward J Beckett创建file.php文件,第一行内容为:
file.php(#!/bin/php)
file.sh(#!/bin/bash).
检查已安装的php。在终端中运行以下命令:
which php
/usr/bin/php
使用以下命令运行file.php文件:
php file.php
#!/bin/bash
run_php=`php file.php`
echo $run_php
注意单引号和反引号是不同的!!!
如果你的bash脚本仅仅是运行php脚本,那么你可以通过类似于/usr/bin/php /path/to/your/file.php的命令在cron中直接运行php脚本。
file.php
。#!/bin/bash
php-cgi ../path/file.php
当 PHP 脚本执行后,脚本返回了以下内容:
X-Powered-By: PHP/7.1.1 Content-type: text/html; charset=UTF-8
完成!
顺便提一下,通过发出命令 php-cgi -v
检查版本,以确保它能正常工作。