web-dev-qa-db-ja.com

コマンドラインのPHPバージョンを強制するにはどうすればよいですか?

私は1and1.comでホストされており、.htaccessを使用してphp5で解析されるようにファイルを設定しました。

ただし、これはApacheでのみ機能し、デフォルトでサーバーのデフォルトphp4に設定されているコマンドラインでは機能しません。

そのため、現在、コードをphp5として実行するように設定できませんcronジョブ。何か案は?

13
Bluemagica

両方がインストールされている場合は、関連する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バイナリの完全なファイルシステムパスであり、関連するものを呼び出してコードを実行することです。

11
DaveRandom

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)

20
dicotout

PHPスクリプトをシェルで直接実行できる場合:

$ script.php

スクリプトを実行するバイナリを最初の行で指定できます。

#!/usr/bin/php
<?php

その行は Shebang と呼ばれます。システムによって行が異なる場合があります。そのスクリプトに使用するPHP CLIバイナリの完全なファイルシステムパスを知っている必要があります。

そのファイルをシェルで実行すると、指定したバイナリが使用されます。 cronについても同じです。

Webサーバーを介してそのファイルを実行すると、PHPはその行をサイレントにドロップします。

関連項目:機能:コマンドラインからPHP)を使用

4
hakre

これは、1and1のコマンドラインからPHPを強制する別のアプローチです。

サーバーにsshでログインし、そこに.profileという名前の新しいファイルを作成します。そこに次の行を書き込みます。alias php='/usr/local/bin/php5' sshで再度ログインし、php -vでphpバージョンを確認します。バージョンは5になりました。

1

2つのPHPディレクトリが必要で、そのうちの1つがデフォルトのディレクトリである必要があります。サーバーのルートからphp5のパスを見つけて、cronジョブでフルパスを使用してみてください。

1
Emir Akaydın

私はついにこれを機能させました。問題は数倍でした。

まず、使用されているPHPはMAMPバージョンではなく/ etc/binにありました。これを変更して、代わりにMAMPバージョンを使用することができました。

次に、CLIを介してphpを使用するには、php自体だけでなく、phpへのフルパスを使用する必要があります。つまりexec()呼び出しで/MAMP/bin/php/php5.3.x/phpを使用します。これは今私のために働いています。

ここで私の要点を確認できます... https://Gist.github.com/1861487

0
Ryan