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

问题描述 投票:12回答:6

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

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

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

php shell cron command-line-interface
6个回答
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二进制文件的完整文件系统路径,并调用相关的文件系统路径来运行您的代码。


18
投票

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

https://community.1and1.com/using-php-composer-at-1and1/

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

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

结果:

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


4
投票

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

php -v

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

$ script.php

那条线叫做#!/usr/bin/php <?php 。您的系统上的行可能不同,您需要知道要用于该脚本的PHP CLI二进制文件的完整文件系统路径。

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

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

另见:shebang


1
投票

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


1
投票

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

在你的服务器上使用ssh登录并在那里创建一个名为Features: Using PHP from the command line的新文件,你将编写以下行.profile使用ssh重新登录并使用alias php='/usr/local/bin/php5'检查php版本你应该看到版本现在是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

© www.soinside.com 2019 - 2024. All rights reserved.