質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.02%
Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

laravelをローカル環境から本番環境へ移行すときにphpのバージョンが違うためインストールできない

kpby2751
kpby2751

総合スコア19

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

3回答

0グッド

0クリップ

368閲覧

投稿2022/11/18 07:23

前提

Gitを使ってローカル環境から本番環境へ移動しようとしています。そこでいま使っているlaravelと本番環境でのphpのバージョンが合わないようで、composer installをしてもライブラリがインストールできません。問題1のエラーを見る限りphp v.8.0.2を要求していると思ったのでcomposer config platform.php 8.0.2 composer updateとしてcomposerのjsonファイルとlockファイルを変更してみたのですが、変わらず下記のエラーが出ます。その後問題2,3,…と続きました。コンポーザーのバージョンも1から2へ変えたんですが変わらずエラーが出ます。

実現したいこと

インストールが完了してほしい。

発生している問題・エラーメッセージ

$ composer install You are using Composer 1 which is deprecated. You should upgrade to Composer 2, see https://blog.packagist.com/deprecating-composer-1-support/ Loading composer repositories with package information Installing dependencies (including require-dev) from lock file Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. It is recommended that you run `composer update` or `composer update <package name>`. Your requirements could not be resolved to an installable set of packages. Problem 1 - This package requires php ^8.0.2 but your PHP version (5.4.16) does not satisfy that requirement. Problem 2 - Installation request for brick/math 0.10.2 -> satisfiable by brick/math[0.10.2]. - brick/math 0.10.2 requires php ^7.4 || ^8.0 -> your PHP version (5.4.16) does not satisfy that requirement.

該当のソースコード

$ composer --version Composer version 2.4.4 2022-10-27 14:39:29

composer.json

1 "require": { 2 "php": "^8.0.2", 3 "guzzlehttp/guzzle": "^7.2", 4 "http-interop/http-factory-guzzle": "^1.2", 5 "laravel/cashier": "^14.2", 6 "laravel/framework": "^9.19", 7 "laravel/sanctum": "^3.0", 8 "laravel/scout": "^9.4", 9 "laravel/tinker": "^2.7", 10 "meilisearch/meilisearch-php": "^0.25.0", 11 "spatie/laravel-searchable": "^1.11" 12 }, 13 "config": { 14 "optimize-autoloader": true, 15 "preferred-install": "dist", 16 "sort-packages": true, 17 "allow-plugins": { 18 "pestphp/pest-plugin": true 19 }, 20 "platform": { 21 "php": "8.0.2" 22 } 23 },

composer.lock

1"version": "v14.3.1",

試したこと

composer.json/lockファイルをcomposerで書き換えた。
composerのバージョンを1から2へ変更した。

補足情報(FW/ツールのバージョンなど)

Laravel Framework 9.40.1
を使用。

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答3

0

自己解決

今回の問題点は2点

  • SSH接続した先のcomposerのバージョンが古い(1.10.x)
  • SSH接続した先のphpのバージョンが古い(5.4.x)

が原因でした。
いずれもxserverを使うときに初期設定で古いバージョンになっているようです。私が質問文で言っていたcomposerのアップデートはSSH接続する前の話即ちローカルでのことでした。そのためSSH接続した先のサーバー側では変更できていなく、そもそもSSH接続を知らなく(ただ打ち込んでいただけ)その方法を探すのに苦労しました。xserver;composerのupdate方法←お世話になりました。
同様にSSH接続を知らないことからphpのバージョンを変更するのも頓珍漢なことをしていました。xserver;phpのバージョンup方法←お世話になりました。
またvi .bash_profileの編集や保存などの操作も知りませんでした。bashの編集←お世話になりました。

そして今回ご回答いただいた皆さんありがとうございました。

投稿2022/11/20 02:16

kpby2751

総合スコア19

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

0

エックスサーバーのコマンドラインで phpコマンドを実行する場合、PHP のバージョン切り替えは、ファイル名でバージョンを指定します。

どのような phpコマンドファイルがあるかを見てみると...

ls /usr/bin/php* /usr/bin/php /usr/bin/php5.1 /usr/bin/php5.3 /usr/bin/php5.4 /usr/bin/php5.5 /usr/bin/php5.6 /usr/bin/php7.0 /usr/bin/php7.1 /usr/bin/php7.2 /usr/bin/php7.3 /usr/bin/php7.4 /usr/bin/php8.0 /usr/bin/php8.1

とファイル名にバージョンが記載されています。

試しに それぞれのPHPコマンドを実行してみると...

$ php -v PHP 5.4.16 (cli) (built: Apr 1 2020 04:07:17) Copyright (c) 1997-2013 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies with Zend OPcache v7.0.5, Copyright (c) 1999-2015, by Zend Technologies
$ php8.1 -v PHP 8.1.6 (cli) (built: May 18 2022 18:18:39) (NTS) Copyright (c) The PHP Group Zend Engine v4.1.6, Copyright (c) Zend Technologies

となります。


どのように composer をインストールされたのかわかりませんが、composer 実行時に php コマンドを指定して、php8.0 /path/to/composer install 等のように実行するとどうなりますか?

投稿2022/11/18 11:08

CHERRY

総合スコア24701

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

kpby2751

2022/11/19 01:34

laravelファイルの中にtestファイルを作り、その中にインストールしたいと思います。testファイルは既にあるので、後はライブラリをそこにインストールするだけです。sshログイン後に ```php8.0 /path/to/composer install ``` としてもしても Could not open input file: /path/to/composer と返されます。 また自分なりに知らべてみてphp8.0.16にしてみたところ、上手くインストールできたのかもしれません。 Generating optimized autoload files INFO Discovering packages. ~~~ 85 packages you are using are looking for funding. しかし幾つかがかりなところがあり、 Deprecation Notice: preg_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated in /usr/share/php/Composer/Autoload/ClassMapGenerator.php:257 Deprecation Notice: strlen(): Passing null to parameter #1 ($string) of type string is deprecated in /usr/share/php/JsonSchema5/Constraints/Constraint.php:48 Warning from https://repo.packagist.org: Support for Composer 1 is deprecated and some packages will not be available. You should upgrade to Composer 2. See https://blog.packagist.com/deprecating-composer-1-support/ と表示されるところです。コンポーザーのバージョンの問題なのかなと思うのですがどうでしょうか。このままインストールが完了なのか、コンポーザーのバージョンを変えなければいけないのか。よく分かりません。
CHERRY

2022/11/19 04:02 編集

> php8.0 /path/to/composer install /path/to の部分は、ご自身の環境の composer のパスに書き換えてください。 which composer 等で調べれると思います。

0

サーバーのPHPが5.4だから何をどうやっても絶対に動かない。サーバーのPHPを8.0以上に上げるしかない。

- This package requires php ^8.0.2 but your PHP version (5.4.16) does not satisfy that requirement.

投稿2022/11/18 08:03

kawax

総合スコア10002

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

kpby2751

2022/11/18 09:46

サーバーばxserverを使用しています。こちらのphpは元々7.4.28だったので、既に8.0.16に変えてからしていました(現在のバージョンに8.0.16と記載されています)。そのため5.4.16と表示されたのはなぜなのだろうかと思って質問しました。

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.02%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。