Лучший способ сделать RHSCL PHP доступным во всем мире

10

Я установил RHSCL 2, используя следующий URL:

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без дополнительных команд. Мне нужны бинарные файлы php, доступные на глобальном уровне, чтобы веб-серверы могли использовать их и пользователей ssh ​​с обычными оболочками.

Ozzy
источник
Вы забыли прочитать главу 3 ссылки, которую вы дали ....
Свен
1
Свен ... Я прочитал это сам ... и все, что у него есть - это запуск суб-оболочки с доступной коллекцией. В нем НЕ подробно описано, как сделать коллекцию доступной по умолчанию без необходимости запуска вспомогательной оболочки. Я подробно опишу правильное решение ниже.
Энтони
Свен, это будет означать, что каждый пользователь и каждый демон должны будут работать scl enable rh-php56 command, что сложно. Включение его глобально через ответ @ antofthy намного более элегантно.
Стефан Ласевский,

Ответы:

16

Чтобы импортировать коллекцию программного обеспечения в вашу текущую оболочку (не запускать вложенную оболочку), используйте исходный файл «enable».

Например, для rh-php56 на машине Redhat 7 ...

source / opt / rh / rh-php56 / enable

Теперь вы можете запустить "php" или читать manpages "man php" как обычно.

это добавит соответствующие переменные среды в текущую среду оболочки. Отдельные пользователи могут делать это в файлах .bashrc, что позволяет ему быть доступным из SSH (неинтерактивные оболочки)

Вы также можете скопировать (или символическую ссылку) файл включения в /etc/profile.d/ с суффиксом «.sh», чтобы автоматически включить его для ВСЕХ пользователей.

Например

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

Делайте это, если нужно больше, чем среда (например, демоны?). Или, если в системе присутствует несколько версий этого программного обеспечения (для обратной совместимости с другим программным обеспечением / службами), возможно взаимодействие между версиями. Кроме того, пользователи могут не захотеть «последнюю» версию или запутаться в том, почему «базовая» система (EG: / etc config) не влияет на версию коллекции программного обеспечения.

Энтони Тиссен (очень старый системный администратор)

Энтони
источник
какой экземпляр php.ini вызывает этот метод?
Дарванен
1
Прочитанный файл php.ini жестко запрограммирован в программе php. В приведенном выше примере это "/etc/opt/rh/rh-php56/php.ini". Вы можете проверить это с помощью PHP-скрипта <? Php phpinfo ()?> Либо с веб-страницы ".php", либо с помощью команды CLI PHP.
Энтони
Аааа ... Я перезапускал httpd вместо службы php-fpm. Размещать здесь на случай, если кто-то застрянет таким образом.
Дарванен
Достаточно ли этого для включения пакета SCL? access.redhat.com/solutions/527703, кажется, создает сценарий bash, который делает что-то вродеsource scl_source enable python33
Stefan Lasiewski
Должно быть достаточно. Это в основном устанавливает среду для использования конкретной версии над версией системы. Но только внутри вложенной оболочки.
Энтони