先日XserverにSSH接続し、Tera Termでコマンド操作する機会があったんですが、当初コマンドがうまく動作しませんでした。
コマンドは、wordpress用のWP-CLIライブラリの中の「regenerate」でしたが、実行すると、
「あなたのサーバーのPHPバージョンは5.4.16だが、wordpress6.1.1には少なくてもPHPバージョン5.6.20以上が必要です。」
と言われました。
???XserverのPHPバージョンはたしか7.4.33に設定しているはずだが?
で、Xserverのサーバーパネルで確認してみると、やはり7.4.33になってます。
どういうことなのか?
そこで今回は、XserverのSSH接続でWP-CLIコマンドを実行させるために行った、PHPバージョンの変更方法をわかりやすく説明します。
SSH接続のPHPバージョン
数あるレンタルサーバーの中でも、XserverはSSHを使ってサーバー上のファイル操作が安全にできるユーザーフレンドリーなサーバーです。
\Xserverの申し込みはこちらから/
ですが、SSH接続して、Tera TermからWP-CLIのコマンドを実行しようとすると、前述のようにPHPのバージョンが適切でないと言われました。
実は、XserverでSSH接続しコマンドラインを実行する際に適用されるPHPバージョンは、デフォルトでPHP5.4.16になっています。
これは、XserverのサーバーパネルからPHPバージョンを切り替えてもその結果が反映されず、変更されません。
PHPバージョンの変更
解決策として、wordpressのバージョンダウンも考えましたが、あまり現実的とは言えません。そこでSSH接続時のPHPバージョンを変更することにしました。
これがコマンド素人の私には大変でした。何度もやり直し何とか変更できましたが、できるだけわかりやすく説明します。
- ①SSH接続
- ②現在のPHPバージョン確認
- ③利用できるPHPバージョンの確認
- ④binディレクトリの作成
- ⑤シンボリックリンクの作成
- ⑥bash_profileを編集
- ⑦変更を反映させる
- ⑧確認
①SSH接続
とりあえずSSH接続しないと始まりません。
SSH接続にはTera Termを使いますが、詳細は前回の記事を参照してください。
②現在のPHPバージョン確認
SSH接続できたら、現在のPHPバージョンを確認します。
Tera Termのプロンプトに
php -v
と入力後Enterを押す。
すると、上図のように現在SSHで使われているPHPのバージョンが表示されます。
上図はすでに変更済みのためPHP7.4.33になってますが、通常はPHP5.4.16となっていると思います。
③利用できるPHPバージョン確認
次にXserverで利用できるPHPバージョンとパスを調べます。
Tera Termに
find /opt/php-*/bin -type f -name 'php'
と入力しEnterを押すと、
このように利用できるPHPのバージョン一覧とパスが表示されます。
ここで使いたいバージョンのパスをメモしておきます。
私は、Xserver推奨のPHPバージョン7.4.33にしましたのでパスは、
/opt/php-7.4.33/bin/php
になります。
④binディレクトリを作成
Xserverのホームディレクトリにbinディレクトリが無い場合は、作成しておきます。
mkdir $home/bin
すでにディレクトリが存在する場合は、「/binを作成できません:ファイルが存在します。」と言われますがそのままで問題ありません。
⑤シンボリックリンクの作成
*注 すでにシンボリックリンクが存在する場合もあります。
すでにPHPのシンボリックリンクが存在していることがありますので、シンボリックリンク作成前に、念のため既存のリンクを解除しておきましょう。
プロンプトでbinディレクトリに移動した後、リンク解除します。
cd $home/bin
unlink php
それでは、binディレクトリの中に、選択したPHPバージョンのシンボリックリンクを作成します。(シンボリックリンクはWindowsのショートカットと似た機能のことです。)
プロンプトに、
ln -s /opt/php-7.4.33/bin/php $HOME/bin
このように入力しEnterを押します。
*上記コマンドの「/opt/php-7.4.33/php」の部分が先ほどメモしたPHPバージョンのパスになります。
これで、binディレクトリに選択したPHPバージョンのシンボリックリンクができました。
シンボリックリンクの確認は、binディレクトリに移動し、「ls -l」コマンドでできます。
ls -l
lrwxrwxrwx 1 ksanhonsan3 members 23 1月 21 22:07 php -> /opt/php-7.4.33/bin/php
上記のようになっていればOK。
⑥bash_profoileの編集
続いて、bash_profileを編集してbash起動時に、優先的にbinディレクトリを参照するようにパス(PATH)を通します。
bash_profile?bash?何がなんやらわかりにくいですが、ここではまぁそんなものかと思ってください。
bash_profileの編集はプロンプトからもできます。
vi .bash_profile
ですが、「vi」を使った編集は私には手強かったので、XserverのWebFTP(ファイルマネージャー)で行いました。
Xserverのファイルマネージャーにログインし、
ルートディレクトリから「bash_profile」を選択、メニューの「編集」をクリックしファイルを開きます。
編集するのは、
PATH=$PATH:$HOME/bin
この部分です。これを、
PATH=$HOME/bin:$PATH
と書き換えるだけ。
書き換えが終わったら下の更新をクリックしてください。
⑦変更を反映させる
bash_profileを編集し終えたら、変更を反映させなければなりません。
プロンプトにもどり、
source .bash_profile
bash_profileの前に「.」ドットを入れるのを忘れないでくださいね。
⑧変更の確認
最後にPHPバージョンを変更できたかどうか確認してください。
プロンプトから、
php -v
上図のように、希望のバージョン(ここではPHP7.4.33)になっていれば完了です。
まとめ
もともとは、wordpressのプラグインRegenerate Thumbnailsを使おうとして試してみたSSH接続ですが、コマンド音痴の私には敷居が高かったです。
ただ今回の作業を通じて、少しはUNIX/Linuxのコマンド操作やサーバーの遠隔操作について学べたのは収穫だったかなと思います。
いやぁ~しかしネットの世界は深くて広いなぁ。
あんまり深入りすると抜け出せなくなりそう。
ですが、いずれ今回覚えた一連の操作がいずれ役に立つ時が来るんではないかと思ってます。
今回は以上です。
この記事がどなたかのお役に立てればうれしいです。
それでは
\Xserverのお申し込みはこちら/
コメント
コメント一覧 (9件)
composerをアップデートしようとしたら、まさしくこの問題にぶち当たりました
サーバーパネルでは7.4.33なのにSSHだと5.xで何故だぁ~って、あたふたしてこのサイトまで行きつきました
アップデートも完了し、目的の某SDKインストールも無事行えました
非常に分かり易い解説、ありがとうございます
しがないエンジニアさん、サイトをご覧いただきありがとうございました。
また、参考になったようで私もうれしいです。
今後ともよろしくお願いします。
要点を簡潔に纏めて頂き、有難うございます。
ただ、binディレクトリに移動してシンボリックリンクを解除しようとした際、
「’php’ を unlink できません: 許可がありません」と表示されてしまいました。
不躾ながら、この事象についてアドバイスを頂ければ幸いです。
自分でもどうやったか判らないのですが、
シンボリックリンクの張替えに成功しました。
しかし、パスを通したにも関わらず、
cliのバージョンは 5.4.16 で変化ありませんでした。
状況が混乱し、大変恐縮です。
度々の投稿恐縮です。
リンクを張り替えられたと思ったのはhomeディレクトリであり、
binディレクトリではありませんでした。失礼しました。
bin内では、やはりunlinkもrmも許可されていないようです。
埴谷さん、コメントありがとうございます。
実はつい先日、デスクトップとノートパソコンを買い替えて、Windowsも11にバージョンアップ
しており、いまだに環境設定に手間取っております。
なのでSSH接続もTeratermもインストールできていません。
返信が遅くなるとわ思いますが、環境が整い次第ご質問に回答させていただきます。
返信を有難うございます。
アドバイス頂けるだけで大変有り難いですので、
どうかお気になさらないで下さい。
埴谷さんご無沙汰しています。
ようやく新しい環境が整いましたので、ご質問に返信させていただきます。
binディレクトリ内で「unlink」や「rm」のコマンドが許可されないとのことですが、
私の環境では一度もそのような現象は発生していませんでした。
なので予測にはなりますが、binディレクトリのパーミッションが関係しているかもしれません。
参考に、私の場合binディレクトリのパーミッションは755になってます。
パーミッションはFTPソフト(Xserverならファイルマネージャー)で確認・変更できます。
スキル不足なので、残念ながらそれ以外の原因はわかりません。
最終手段として、TeraTermを再インストール・SSH接続の再設定がいいかもです。
返信が遅れ、失礼致しました。
御指摘頂いた点を確認しましたが、パーミッションは777に設定されていました。従ってアクセス権の問題ではないと思われます。けーさん様の環境ではそういった事象が発生していない点を鑑みますと、サーバーに固有の問題かも知れません。これ以上お手を煩わせるのも心苦しいですので、後は自力で取り組みたいと思います。
お付き合い頂きまして、有難うございました。