【问题标题】:How can I force PHP Version for Command Line?如何强制命令行的 PHP 版本?
【发布时间】:2020-08-16 02:10:09
【问题描述】:

我在 1and1.com 上托管,我已设置我的文件以使用 .htaccess 使用 php5 进行解析。

但这仅适用于apache,而不适用于命令行,默认为服务器默认php4。

所以目前我无法设置 cron 作业 以将我的代码作为 php5 运行。有什么想法吗?

【问题讨论】:

    标签: php shell cron command-line-interface


    【解决方案1】:

    按照https://community.1and1.com/using-php-composer-at-1and1/,在你的root projet中创建.profile并添加一行:

    alias php='/usr/bin/php5.5-cli'
    

    它对我有用。 注销并重新登录 SSH 并执行:

    php -v
    

    结果:

    PHP 5.5.32 (cli)(构建时间:2016 年 2 月 15 日 16:13:44)

    【讨论】:

      【解决方案2】:

      如果两者都安装了,您需要做的就是使用相关的 PHP 二进制文件运行脚本。

      例如:

       // Runs using the PHP binary located at /usr/bin/php
       * * * * * root /usr/bin/php -n "/path/to/script.php"
      

       // Runs using the PHP binary located at /var/php5
       * * * * * root /var/php5 -n "/path/to/script.php"
      

      您只需要知道 PHP CLI 二进制文件的完整文件系统路径,并调用相关的路径来运行您的代码。

      【讨论】:

        【解决方案3】:

        如果您可以直接在 shell 中执行 PHP 脚本,例如:

        $ script.php
        

        您可以在第一行指定将执行脚本的二进制文件:

        #!/usr/bin/php
        <?php
        

        那条线叫做shebang。该行在您的系统上可能有所不同,您需要知道要用于该脚本的 PHP CLI 二进制文件的完整文件系统路径。

        如果您在 shell 中执行该文件,将使用指定的二进制文件。 cron 也是一样。

        如果您通过网络服务器执行该文件,PHP 将静默删除该行。

        另请参阅: Features: Using PHP from the command line

        【讨论】:

          【解决方案4】:

          必须有两个 PHP 目录,其中一个应该是默认目录。尝试从服务器的根目录中找出 php5 的路径,并在您的 cron 作业中使用完整路径。

          【讨论】:

          • whereis php 可以帮助您找到您的 php 位置
          • which phpwhich php5.5-cli 因为 1and1 命令行没有 whereis
          【解决方案5】:

          这是另一种从命令行强制 PHP 1and1 的方法。

          在您的服务器上使用 ssh 登录并创建一个名为 .profile 的新文件 在那里,您将编写以下行 alias php='/usr/local/bin/php5' 使用 ssh 重新登录并使用 php -v 检查 php 版本,您应该会看到 现在版本是 5。

          【讨论】:

            【解决方案6】:

            我终于得到了这个工作。问题有很多。

            首先,所使用的 PHP 位于 /etc/bin 而不是 MAMP 版本。我能够更改它并改用 MAMP 版本。

            其次,要通过 CLI 使用 php,您必须确保使用 php 的完整路径,而不仅仅是 php 本身。 IE。在 exec() 调用中使用 /MAMP/bin/php/php5.3.x/php。这现在对我有用。

            你可以在这里查看我的 GIST...https://gist.github.com/1861487

            【讨论】:

            • 您不需要使用完整路径让 php 在 CLI 中运行(使用 MAMP、XAMPP 和 OSX 的库存安装从我的 Mac 上的终端运行 php,我确信这一点。)您这样做的原因是(取决于您收到的错误):a)您的 PATH env 变量中没有 bin 目录(每次都会让我知道),或者 b)您安装了多个版本的 php 并且路径中的第一个不是您想要的。对于前者,您可以通过在 php 调用之前运行以下命令来确认:PATH=$PATH:/MAMP/bin
            • 这根本不能回答问题。 OP问的是1and1的环境,和MAMP无关。
            【解决方案7】:

            至少在 Linux 上,您还可以在脚本的第一行中指定所需的 PHP 版本,如下所示:

            #!/usr/bin/php5.6
            <?php
              echo 'This is PHP version ' . phpversion() . "\n";
            ?>
            

            使您的脚本可执行并按以下方式指定 cron 作业:

            # Just runs the script, which itself cares for the right php version
            * * * * * root "/path/to/script.php"
            

            【讨论】:

              猜你喜欢
              • 2015-08-29
              • 2021-01-23
              • 1970-01-01
              • 1970-01-01
              • 2013-03-15
              • 2019-12-09
              • 2017-11-16
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多