用于运行 php 脚本的 Bash 脚本

Posted

技术标签:

【中文标题】用于运行 php 脚本的 Bash 脚本【英文标题】:Bash script to run php script 【发布时间】:2011-07-27 06:54:24 【问题描述】:

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

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

到目前为止,我被告知我需要输入:

#!/pathtoscript/testphp.php

在我的 php 脚本的开头。我不知道从这里做什么......

有什么建议吗?谢谢。

【问题讨论】:

This answer 为我工作 【参考方案1】:

如果您将 PHP 作为命令行工具安装(尝试向终端发出 php 并查看它是否有效),您的 shebang (#!) 行需要如下所示:

#!/usr/bin/php

将其放在脚本的顶部,使其可执行 (chmod +x myscript.php),然后创建一个 Cron 作业来执行该脚本(与执行 bash 脚本的方式相同)。

您也可以使用php myscript.php

【讨论】:

如果你打算使用 shebang 来使用命令行,你真的应该使用 "#!/usr/bin/env php",因为它允许脚本更便携,因为 PHP 可能并不总是安装在“/usr/bin/php”中。有意义吗?【参考方案2】:

有时 PHP 被放置在非标准位置,所以最好先找到它然后尝试执行。

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

【讨论】:

【参考方案3】:

以前的海报说..

如果您将 PHP 作为命令行工具安装……您的 shebang (#!) 行需要如下所示:#!/usr/bin/php

虽然这可能是真的...仅仅因为您可以输入php 并不一定意味着这就是 php 的位置.../usr/bin/php 是一个常见的位置...但与任何 shebang……都需要根据您的 env 量身定制。

找出您的特定可执行文件在您的$PATH 上的快速方法,试试.. ➜which -a php ENTER,对我来说看起来像..

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

如果我只是在命令提示符下输入 php,第一个是默认值……但我可以在 shebang 中使用它们中的任何一个,或者直接使用……你也可以将可执行文件名称与env 结合使用,就像经常看到的那样,但我真的不太了解/信任那个。 XOXO。

【讨论】:

【参考方案4】:

你只需要设置:

/usr/bin/php path_to_your_php_file

在你的 crontab 中。

【讨论】:

【参考方案5】:

我很确定您正在寻找这样的东西:

#!/bin/sh

php /pathToScript/script.php

用你想要的脚本名(比如runPHP.sh)保存它并赋予它执行权限,然后你就可以随意使用它了。

编辑:如果我没记错的话,您最好不要使用 bash 脚本,只需将“php ...”命令添加到 crontab。

祝你好运!

【讨论】:

在大多数环境中,您不能简单地调用php youscript.php,而必须找出正确的路径。例如。使用整个路径 /usr/bin/php myscript.php 或通过调用 which php 动态计算它并将结果写入稍后使用的变量中。【参考方案6】:

bash 脚本应该是这样的:

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

您需要 php 可执行文件(通常在 /usr/bin 中找到)和要运行的 php 脚本的路径。现在您只需将此 bash 脚本放在 crontab 上即可!

【讨论】:

【参考方案7】:

一种快速找出特定可执行文件在 $PATH 上的位置的方法,试试吧。

找到php在哪里的更快方法...

whereis php

我正在运行debian 及以上命令显示我

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

希望对您有所帮助。

【讨论】:

返回输出“unknown whereis” 如果不是默认安装whereis,则必须安装。 我已经在windows系统上安装了ffmpeg,它通过命令行工作,但在启用exec命令时不能通过php工作。安装ffmpeg后,我还重新启动了计算机和xampp。仅供参考,我也设置了 ffmpeg 的环境变量。如果可以的话,请提供帮助。非常感谢:) 你应该为那个问题伙伴创建一个单独的poat。【参考方案8】:

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

【讨论】:

【参考方案9】:

我在我的服务器上找到了 php-cgi。它在环境路径上,所以我可以从任何地方运行。我在我的 bash 脚本中成功执行了 file.php

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

并且脚本在执行 php 脚本后返回:

X-Powered-By: PHP/7.1.1 内容类型:text/html; charset=UTF-8

完成!

顺便说一下,先检查一下发出命令php-cgi -v的版本是否有效

【讨论】:

以上是关于用于运行 php 脚本的 Bash 脚本的主要内容,如果未能解决你的问题,请参考以下文章

在 linux bash 中运行 php 脚本(php 函数)

在 bash 脚本中运行 php:错误“无法打开输入文件”

用于打开外壳、在外壳中运行命令并保持外壳运行的 Bash 脚本

用于并行运行 AWS Cli 命令以减少时间的 Bash 脚本

sh 用于检查MySQL是否正在运行的简单bash脚本。

sh 用于运行Ansible Playbooks的Quick Bash脚本