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

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

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

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

#!/pathtoscript/testphp.php

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

有什么建议吗?谢谢。

【问题讨论】:

标签: php bash shell cron


【解决方案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的版本是否有效

            【讨论】:

              最近更新 更多