私はこれに数日間立ち往生しています。私は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ではできませんでした。
Ubuntu 18.04ケース...これは私のために実行します。
/usr/bin/php7.1 /usr/local/bin/composer update
Xubuntuでは、デフォルトとしてphp 7.2がありました。ただし、composer= php 5.6で実行する必要があります。
だからこれは私のために働いた:
php5.6 /usr/bin/composer
以下のコードをcomposer.jsonファイルに追加して、異なるPHPバージョンを設定するだけです。
"config": {
"platform": {
"php": "7.1.3"
}
}
このアプローチを試してください
ea-php72 /opt/cpanel/composer/bin/composer
私も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警告がスローされるためです。少なくとも私のアカウントではそうです。
これが誰かを助けることを願っています。
PATH
を変更して、PHPバージョンをオーバーライドできます。
PATH="/home/user/bin:$PATH"
/home/user/bin
(または他のディレクトリ)phpという名前のシンボリックリンクをphp5バイナリに作成します。
別のオプションとして、シェルエイリアスを使用します。
alias php="/path/to/php5"
_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 =
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
この質問は少し古いことを知っています...しかし、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
代わりに、phpおよびphp-configファイルを/ usr/local/binにコピーしてみてください。そのパスの優先順位は高く、SIPを無効にする必要なく/ usr/binフォルダーをオーバーライドする必要があります。それが私がしたことです。