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


How can I force PHP Version for Command Line?

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

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

因此,目前我无法设置cronjobs以将我的代码作为php5运行。有什么想法吗?

根据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(

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

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

$ script.php

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

#!/usr/bin/php
<?php

这条线被称为shebang。这一行可能因您的系统而异,您需要知道要用于该脚本的PHP CLI二进制文件的完整文件系统路径。

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

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

另请参阅:功能:从命令行使用PHP

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

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

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

我终于完成了这项工作。问题有几个方面。

首先,使用的PHP是/etc/bin,而不是MAMP版本。我能够改变这一点,转而使用MAMP版本。

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

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

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