Установка расширения php для SQL в любом месте на сервере с CentOS, Plesk, php-fpm

#centos #sqlanywhere #php-7.3 #plex

#centos #sqlanywhere #php-7.3 #plex

Вопрос:

мы получили новый веб-сервер с CentOS, Plesk и php-fpm. Теперь мы не запускаем расширение php.

Что мы сделали:

  • установлена последняя версия SQL Anywhere 17 (ebf29577)
  • скопировано php-7.3.0_sqlanywhere_r.so кому /opt/plesk/php/7.3/lib64/php/modules/
  • загрузка php-7.3.0_sqlanywhere_r.so через /opt/plesk/php/7.3/etc/php.d/sqlanywhere.ini
  • это приводит к ошибке: ПРЕДУПРЕЖДЕНИЕ: [pool plesk-php73-fpm.plesk-service.localdomain] дочерний элемент 11616 сообщил в stderr: «УВЕДОМЛЕНИЕ: сообщение PHP: предупреждение PHP: сбой request_startup() для модуля sqlanywhere неизвестен в строке 0» (это приводит к тому, что php 7.3 fpm вообще не загружается)
  • следующая попытка заключалась в переключении с FPM на CGI: та же ошибка
  • модуль может загружаться сам в оболочке, если LD_LIBRARY_PATH был расширен с помощью path /opt/sqlanywhere17/lib64/
  • некоторые попытки получить причину с помощью strace не помогли

У кого-нибудь есть идея или, может быть, даже успешно установлено расширение php.

Спасибо Флориан

Комментарии:

1. Один шаг вперед: /opt/plesk/php/7.3/bin/php -c /opt/plesk/php/7.3/etc/php.ini -i возвращает правильный и полный phpinfo с расширением при запуске от имени root. Но как пользователь он возвращает сообщение об ошибке.

2. php -i возвращает желаемый результат, но невозможно получить тот же результат, когда php-fpm запускается на веб-сервере. Среда Box в phpinfo показывает USER и HOME только как переменные. Я не могу найти способ добавить дополнительные переменные.

Ответ №1:

после множества тестов мы нашли решение: в настройках php домена Plesk нам пришлось добавить:

 [php-fpm-pool-settings]
env[LD_LIBRARY_PATH]="/opt/sqlanywhere_v2/lib64:$LD_LIBRARY_PATH"
 

Теперь все библиотеки найдены, и это работает

Ответ №2:

Для меня решением было создание пользовательского обработчика:

 plesk bin php_handler --add -displayname "PHP SQLAnywhere 7.4" -path /opt/php-custom-handlers/7.4/php-sqlanywhere.fcgi -clipath /opt/plesk/php/7.4/bin/php -phpini /opt/plesk/php/7.4/etc/php.ini -type fastcgi
 

php-sqlanywhere.содержимое fcgi:

 #!/bin/bash
LD_LIBRARY_PATH=/opt/sqlanywhere17/lib64
export LD_LIBRARY_PATH
exec /opt/plesk/php/7.4/bin/php-cgi "$@"
 

И, наконец, использование этого обработчика в настройках php домена и добавление дополнительных директив:

 extension=sqlanywhere.so