LINUX.ORG.RU
ФорумAdmin

Исправление багов VestaCP (bash-скрипт)

 , , , ,


0

1

Всем привет!

Вот есть баг https://github.com/serghey-rodin/vesta/issues/1448

Баг воспроизводится при наличии нескольких версий php-fpm в системе

Одна из известных мне причин этого бага использование шелл-скриптов — то, что в переменную $pool отсюда возвращается массив строк вместо одной строки. А сам скрипт в дальнейшем не может распарсить такой выхлоп, что и приводит к ошибке, описанной в тикете.

Отсюда у меня вопрос к знатокам баша: Как лучше обработать массив строк, возвращаемый при наличии нескольких версий php-fpm в системе? И как в bash представить этот массив строк максимально удобно для дальнейшей обработки в скрипте?

Обходной путь «втупую» — захардкодить версию php-fpm в пути к пулу я указал в тикете, но это как-то совсем некошерно)))

★★★★★

Да там в самой функции уже будет проблема:

if [ -e "$pool/$backend_type.conf" ]; then

подразумевает, что ″$pool", получаемый от выполнения ″find″ может содежрать только один каталог.

Если не хардкодить версию php-fpm, то как должен осуществляться выбор, по вашему, запросом к пользователю?

mky ★★★★★ ()
Ответ на: комментарий от mky

подразумевает, что ″$pool", получаемый от выполнения ″find″ может содежрать только один каталог.

Именно так. Об этом написано в ОП.

Я уже думал об этом, по-хорошему нужно пройтись по каталогу

/etc/php/$ver/fpm
собрать циферки в массив, а только потом(хотя бы и по запросу пользователя) задавать путь к пулу.

Да, так получается, что сложность скрипта сильно возрастает на ровном месте.

Twissel ★★★★★ ()
Последнее исправление: Twissel (всего исправлений: 1)
Ответ на: комментарий от Twissel

В ОП написано:

что функция prepare_web_backend() отсюда возвращает массив строк вместо одной строки.

Эта функция вобще ничего не возвращает, она должна устанавливать переменную backend_lsnr. Но в случае нескольких php-fpm она её вобще не устанавливает, а не как можно подумать из исходного поста, записывает туда несколько значений.

И в скрипте, во всяком случае, вблизи этой функции, вобще не фигурирует понятие версии php-fpm, там просто сразу из конфига выдирается адрес (listen =), к которому обращаться.

Сложность скрипта возрастёт, хоть и немного, но главное другое. Не понято, может ли этот скрипт вобще запращивать от пользователя хоть что-то или он расчитан на автоматическое выполнение...

mky ★★★★★ ()
Ответ на: комментарий от mky

Да, описался, имел ввиду $pool, а написал про функцию в целом.

Но ты понял :-) Ладно, получается проще все-таки захардкодить, чем думать как его изменить не сломав все остальное)))

Twissel ★★★★★ ()
Последнее исправление: Twissel (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.