用于运行 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/php
php is /usr/bin/php
php is /usr/local/bin/php
php 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 脚本