如何为命令行强制使用PHP版本?

时间:2011-10-14 12:18:07

标签: php shell cron command-line-interface

我与1and1.com一起托管,我已经设置了我的文件,使用.htaccess解析了php5。

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

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

7 个答案:

答案 0 :(得分:18)

根据https://community.1and1.com/using-php-composer-at-1and1/,在根项目中创建.profile并添加以下行:

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

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

php -v

结果:

  

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

答案 1 :(得分:11)

如果两者都已安装,您需要做的就是使用相关的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二进制文件的完整文件系统路径,并调用相关的文件系统路径来运行您的代码。

答案 2 :(得分:4)

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

$ script.php

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

#!/usr/bin/php
<?php

该行称为shebang。您的系统上的行可能不同,您需要知道要用于该脚本的PHP CLI二进制文件的完整文件系统路径。

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

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

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

答案 3 :(得分:1)

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

答案 4 :(得分:1)

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

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

答案 5 :(得分:0)

我终于有了这个工作。这个问题有几个问题。

首先,使用的PHP是在/ etc / bin而不是MAMP版本。我能够改变它并改为使用MAMP版本。

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

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

答案 6 :(得分:0)

至少在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"