web-dev-qa-db-ja.com

Tell Composerを使用して別のPHPバージョン

私はこれに数日間立ち往生しています。私は1and1ホスティングを使用していますが、PHPが少し奇妙に設定されています。

php composer.phar installだけを使用している場合、PHP 4.4.6を使用していますが、これは恐ろしく不十分です。ただし、php5.5 composer.phar installを実行してもう少し進めることができますが、行のどこかでPHPが再度呼び出されるため失敗しますが、4.4.6を使用しているため失敗します。

Composerにphp5.5コマンドを使用するように指示する方法はありますか?誰もが1and1ホスティングでComposer構成に成功しましたか?

Laravelを起動して実行しようとしています(Composerを使用)。 GoDaddyドメインではできましたが、1and1ではできませんでした。

19
Boom

Ubuntu 18.04ケース...これは私のために実行します。

/usr/bin/php7.1 /usr/local/bin/composer update
25
Florin

Xubuntuでは、デフォルトとしてphp 7.2がありました。ただし、composer= php 5.6で実行する必要があります。

だからこれは私のために働いた:

php5.6 /usr/bin/composer
16
Darius.V

以下のコードをcomposer.jsonファイルに追加して、異なるPHPバージョンを設定するだけです。

"config": {

    "platform": {

        "php": "7.1.3"

    }

}
5
Shaig Khaligli

このアプローチを試してください

ea-php72 /opt/cpanel/composer/bin/composer
3
Erich García

私も1&1(ionos)で共有ホスティングアカウントを持っています。これが私がしなければならないことです。

ルートsshアカウントとしてログインする場合は、〜/ .bash_profileを作成して追加できます

alias php="php7.1"
alias composer="php7.1 composer.phar"

これにより、通常使用するコマンドを使用できるようになり、機能します。 (composer.pharをプロジェクトフォルダーのルートに配置します)

次に、開発マシンのlaravel composer.lockファイルが1and1のプロジェクトフォルダーに到達し、実行されることを確認します

composer install

@tobymackenzieからのこのヒントを使用:共有ホストでは、自分のマシンで作成したcomposer.lockファイルからcomposer install(update!ではなく))を実行するだけです。とても低い。

職人のコマンドにはまだSTDINの問題があったので、.envファイルを

APP_ENV=local

本番に設定すると、yesの入力を待機するときに無限のSTDIN警告がスローされるためです。少なくとも私のアカウントではそうです。

これが誰かを助けることを願っています。

3
harrisoftware

PATHを変更して、PHPバージョンをオーバーライドできます。

PATH="/home/user/bin:$PATH"

/home/user/bin(または他のディレクトリ)phpという名前のシンボリックリンクをphp5バイナリに作成します。

別のオプションとして、シェルエイリアスを使用します。

alias php="/path/to/php5"
2
bernie

_php5.5 composer.phar install_は、_composer.json_が_php5.5_ではなくphpを実行するように指示しているために失敗し、ファイル_composer.json_を編集して、PHPスクリプトの参照を_php5.5_。例:

から:

_"post-root-package-install": [
    "php -r \"copy('.env.example', '.env');\""
],
_

に:

_"post-root-package-install": [
    "php5.5 -r \"copy('.env.example', '.env');\""
],
_

これを行う場合でも、1and1にはスクリプト実行のメモリ制限があるため、_php5.5 composer.phar install_は失敗しませんが、実行も完了しません。インストール後もスクリプトを手動で実行できます。

私はLaravel webappsをコミットせずに1and1にvendorディレクトリをデプロイしました。このガイドに従います。 Deploy Laravel Webapp to 1and1 =

1

composerはPHPバイナリスクリプトであり、実行するインタープリターを定義するために nix Shebang を使用しています。

root@home:~# head /usr/local/bin/composer -n 5

#!/usr/bin/env php
<?php
/*
 * This file is part of Composer.
 *


/usr/bin/php7.1 /usr/local/bin/composer update

したがって、特定のオプションなしでcomposerを実行している場合は、PHP version at /usr/bin/env php(デフォルトのPHP)を使用します)

Linux内でPHPの多くのバージョンを使用でき、この方法のように実行するためのPHPバージョンを柔軟に使用できます。

root@home:~# /usr/bin/php7.1 /usr/local/bin/composer update

あるいは単に

root@home:~# php7.1 /usr/local/bin/composer
root@home:~# php7.2 /usr/local/bin/composer
root@home:~# php7.3 composer
...

インストールされているすべてのPHPパッケージを確認および検索するには、/usr/bin/に移動します

root@home:~# ls /usr/bin/ | grep php
php
php5.6
php7.1
php7.2
php7.3
php-config
php-config7.1
phpdbg
phpdbg5.6
phpize
phpize7.1
0
Hieu Huynh

この質問は少し古いことを知っています...しかし、composerをアプリのルートにプルダウンすると:

https://getcomposer.org/download/

グローバルコンポーザーに依存する代わりに、次を実行できます。

php56 composer.phar {あなたのコマンド}

または、新しいhomsteadバージョンは次のようになると思います。

php7.1 composer.phar {あなたのコマンド}

https://laracasts.com/discuss/channels/laravel/run-composer-commands-with-different-php-versions

0
Arshad Syed

代わりに、phpおよびphp-configファイルを/ usr/local/binにコピーしてみてください。そのパスの優先順位は高く、SIPを無効にする必要なく/ usr/binフォルダーをオーバーライドする必要があります。それが私がしたことです。

0
Dave