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

如何强制命令行使用PHP版本?,php,shell,cron,command-line-interface,Php,Shell,Cron,Command Line Interface,我的主机是1and1.com,我已经使用.htaccess设置了要用php5解析的文件 但这只适用于apache,而不适用于命令行,命令行默认为服务器默认的php4 因此,目前我无法设置cron作业以作为php5运行我的代码。有什么想法吗?必须有两个PHP目录,其中一个应该是默认目录。尝试从服务器的根目录中找出php5的路径,并在cron作业中使用完整路径。如果两者都已安装,则只需使用相关的PHP二进制文件运行脚本 例如: // Runs using the PHP binary locate

我的主机是1and1.com,我已经使用
.htaccess
设置了要用php5解析的文件

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


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

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

如果两者都已安装,则只需使用相关的PHP二进制文件运行脚本

例如:

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


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

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

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

#!/usr/bin/php
<?php
#/usr/bin/php

我终于成功了。问题有几方面

首先,使用的PHP位于/etc/bin中,而不是MAMP版本。我可以改变这一点,改用MAMP版本

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


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

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

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

根据,在根项目中创建.profile并添加行:

alias php='/usr/bin/php5.5-cli'
它对我有用。 注销并重新登录SSH,然后执行以下操作:

php -v
结果:

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


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

#/usr/bin/php5.6
使脚本可执行,并按以下方式指定cron作业:

#只运行脚本,脚本本身就关心正确的php版本
*****根“/path/to/script.php”

whereis php
可以帮助您查找php位置
哪个php
哪个php5.5-cli
,因为1和1命令行没有
whereis
您不需要使用php在cli中运行的完整路径(我确信,在Mac上使用MAMP、XAMPP和OSX的库存安装从终端运行php。)您这样做的原因是(取决于您收到的错误):a)您的PATH env变量中没有bin目录(每次都会收到),或者b)您安装了多个php版本,并且路径中的第一个版本不是您想要的版本。对于前者,您可以在php调用之前运行以下命令进行确认:
PATH=$PATH:/MAMP/bin
这根本不能回答问题。OP询问了1和1的环境,这与MAMP无关。
php -v