RHSCL PHPをグローバルに利用可能にする最良の方法


10

次のURLを使用してRHSCL 2をインストールしました。

https://access.redhat.com/documentation/en-US/Red_Hat_Software_Collections/2/html/2.0_Release_Notes/chap-Installation.html

RedHatサブスクリプションマネージャーを使用する。

次に走っyum remove php*yum install rh-php56

PHPがどこにも見つからなくなったことを除いて、すべてが順調に進みました。その後、実行して次のディレクトリでfind / -name php見つけrh-php56ました。

/var/opt/rh/rh-php56/lib/php
/opt/rh/rh-php56/register.content/var/opt/rh/rh-php56/lib/php
/opt/rh/rh-php56/root/usr/bin/php
/opt/rh/rh-php56/root/usr/lib64/php
/opt/rh/rh-php56/root/usr/share/php

これらのバイナリを、/usr/binまたはすべてのユーザーが通常グローバルに利用できる他のディレクトリに入れる最良の方法は何ですか?

パッケージをインストールするときに一歩逃したのはなぜですか?それはグローバルに利用できない理由です?それとも、RHSCLを使用するとどうなるのですか?

私はそれらのフォルダーでバイナリをテストしましたが、実行するとそれらが機能するphp -vため、正常に機能します。

私が最初に考えただけにあるcp/binまたは/usr/bin多分私が求めています何をする公式の方法はありますか?

編集する

コメントできません、担当者はいません...私が投稿したリンクの第3章から、ソフトウェアコレクションパッケージは次のように実行する必要があると述べています:

scl enable rh-php56 'php -v'

これは機能します...しかし$ php -v、追加のコマンドなしですべてのユーザーに対して実行するにはどうすればよいですか?ウェブサーバーがそれを使用して、通常のシェルでsshユーザーが使用できるように、phpバイナリがグローバルに利用できる必要があります。


あなたが与えたリンクの第3章を読むのを忘れました...
スヴェン

1
スヴェン...私はそれを自分で読んだ..そしてそれが持っているすべては、コレクションが利用可能になったサブシェルを開始することである。ユーザーがサブシェルを実行する必要なしに、デフォルトでコレクションを使用可能にする方法については詳しく説明していません。以下で適切な解決策を詳しく説明します。
anthony 2016

Svenは、すべてのユーザーとすべてのデーモンを実行する必要があることを意味しますがscl enable rh-php56 command、これは複雑です。@antofthyの回答を介してグローバルに有効にする方がはるかにエレガントです。
Stefan Lasiewski、2016

回答:


16

ソフトウェアコレクションを現在のシェル(サブシェルを起動しない)にインポートする方法は、「有効」ファイルを読み込むことです。

たとえば、Redhat 7マシンのrh-php56の場合...

ソース/ opt / rh / rh-php56 / enable

「php」を実行するか、通常どおり「man php」のマンページを読むことができます。

これにより、適切な環境変数が現在のシェル環境に追加されます。個々のユーザーは.bashrcファイルでこれを行うことができ、SSH(非インタラクティブシェル)から利用できるようになります

有効ファイルを/etc/profile.d/に「.sh」サフィックスを付けてコピー(またはシンボリックリンク)して、すべてのユーザーに対して自動的に有効にすることもできます。

例えば

ln -s / opt / rh / rh-php56 / enable /etc/profile.d/rh-php56.sh

デーモンなど、環境以上のものが必要な場合は注意してください。または、そのソフトウェアの複数のバージョンがシステムに存在する場合(他のソフトウェア/サービスとの下位互換性のため)、バージョン間に相互作用がある可能性があります。また、ユーザーは「最新」バージョンを望まないか、「基本」システム(例:/ etc configs)がソフトウェアコレクションバージョンに影響しない理由について混乱する可能性があります。

Anthony Thyssen(非常に古いシステム管理者)


このメソッドが呼び出すphp.iniのインスタンスはどれですか?
Darvanen

1
読み込まれたphp.iniファイルは、phpプログラムにハードコードされています。上記の例では、「/ etc / opt / rh / rh-php56 / php.ini」です。これは、 "。php" WebページからのPHPスクリプト<?php phpinfo()?>を使用するか、CLI PHPコマンドを使用して確認できます。
アンソニー

ああ... php-fpmサービスの代わりにhttpdを再起動していました。他の誰かがそのように動けなくなった場合に備えて、ここに投稿します。
Darvanen

これは実際にSCLパッケージを有効にするのに十分ですか?access.redhat.com/solutions/527703は次のようなbashスクリプトを作成するようですsource scl_source enable python33
Stefan Lasiewski

十分なはずです。基本的には、システムバージョンよりも特定のバージョンを使用するように環境を設定します。しかし、サブシェル内でのみ開始されました。
アンソニー'19
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.