Cara terbaik untuk membuat RHSCL PHP tersedia secara global

10

Saya telah menginstal RHSCL 2 menggunakan url berikut:

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

menggunakan manajer berlangganan RedHat.

Saya kemudian berlari yum remove php*diikuti olehyum install rh-php56

Semuanya berjalan lancar kecuali sekarang PHP tidak ditemukan di mana pun. Saya kemudian berlari find / -name phpdan menemukan rh-php56di direktori berikut:

/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

Apa cara terbaik untuk memasukkan binari ini ke /usr/bindirektori lain yang biasanya tersedia secara global untuk semua pengguna?

Apakah saya kehilangan langkah ketika menginstal paket yang mengapa tidak tersedia secara global? Atau apakah ini yang terjadi ketika menggunakan RHSCL?

Saya telah menguji binari di folder-folder itu dan mereka berfungsi ketika saya jalankan php -vsehingga berfungsi dengan baik.

Pikiran pertama saya adalah hanya cpmasuk /binatau /usr/bintetapi mungkin ada cara resmi untuk melakukan apa yang saya minta?

sunting

Tidak dapat berkomentar, tidak ada rep ... dari bab 3 dari tautan yang saya posting, dikatakan bahwa paket pengumpulan perangkat lunak harus dijalankan seperti:

scl enable rh-php56 'php -v'

Yang berhasil ... namun bagaimana cara menjalankannya untuk semua pengguna seperti $ php -vtanpa perintah tambahan. Saya membutuhkan binari php yang tersedia secara global sehingga pengguna web dapat menggunakannya dan ssh pengguna dengan shell yang normal.

Ozzy
sumber
Anda lupa membaca bab 3 dari tautan yang Anda berikan ....
Sven
1
Sven ... Saya membacanya sendiri .. dan yang dimilikinya hanyalah memulai sub-shell dengan koleksi yang tersedia. Ini TIDAK merinci bagaimana membuat koleksi tersedia DENGAN default tanpa pengguna perlu menjalankan sub-shell. Saya akan merinci solusi yang tepat di bawah ini.
anthony
Sven, itu berarti setiap pengguna dan setiap daemon perlu dijalankan scl enable rh-php56 command, yang rumit. Mengaktifkannya secara global melalui jawaban @ antofthy jauh lebih elegan.
Stefan Lasiewski

Jawaban:

16

Cara mengimpor koleksi perangkat lunak ke shell Anda saat ini (tidak meluncurkan sub-shell) adalah dengan sumber file "aktifkan".

Misalnya untuk rh-php56 pada mesin Redhat 7 ...

source / opt / rh / rh-php56 / aktifkan

Anda sekarang dapat menjalankan "php", atau membaca halaman manual "man php" seperti biasa.

yang akan menambahkan variabel lingkungan yang sesuai ke lingkungan shell saat ini. Pengguna individu dapat melakukan ini di file .bashrc di sana, yang memungkinkannya tersedia dari SSH (kerang non-interaktif)

Anda juga dapat menyalin (atau symlink) file yang diaktifkan ke /etc/profile.d/ dengan akhiran ".sh" untuk secara otomatis mengaktifkannya untuk SEMUA pengguna.

Sebagai contoh

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

Berhati-hatilah melakukan ini jika diperlukan lebih dari sekadar lingkungan (seperti daemon?). Atau jika beberapa versi dari perangkat lunak itu ada pada suatu sistem (untuk kompatibilitas mundur dengan perangkat lunak / layanan lain), karena mungkin ada interaksi antara versi. Pengguna juga mungkin tidak menginginkan versi 'terbaru', atau menjadi bingung mengapa sistem 'basis' (EG: / etc configs) tidak mempengaruhi versi pengumpulan perangkat lunak.

Anthony Thyssen (Admin sistem yang sangat lama)

anthony
sumber
contoh php.ini mana yang digunakan metode ini?
Darvanen
1
Pembacaan file php.ini sulit dikodekan ke dalam program php. Dalam contoh di atas adalah "/etc/opt/rh/rh-php56/php.ini". Anda dapat memverifikasi ini menggunakan skrip PHP <? Php phpinfo ()?> Baik dari halaman web ".php", atau menggunakan perintah CLI PHP.
anthony
Ahhh ... Saya me-restart httpd bukan layanan php-fpm. Posting di sini kalau-kalau ada orang yang terjebak seperti itu.
Darvanen
Apakah ini sebenarnya cukup untuk mengaktifkan paket SCL? access.redhat.com/solutions/527703 tampaknya membuat skrip bash yang source scl_source enable python33
berfungsi
Harus cukup. Ini pada dasarnya mengatur lingkungan untuk menggunakan versi spesifik dari versi sistem. Tetapi hanya dalam sub-shell dimulai.
anthony