使用CentOS、Plesk、php fpm在服务器上安装SQL Anywhere的php扩展

使用CentOS、Plesk、php fpm在服务器上安装SQL Anywhere的php扩展,centos,sqlanywhere,php-7.3,plex,Centos,Sqlanywhere,Php 7.3,Plex,我们用CentOS、Plesk和php fpm开发了一个新的Web服务器。 现在我们没有运行php扩展 我们所做的: 已安装最新的SQL Anywhere 17(ebf29577) 将php-7.3.0_sqlanywhere_r.so复制到/opt/plesk/php/7.3/lib64/php/modules/ 通过/opt/plesk/php/7.3/etc/php.d/sqlanywhere.ini加载php-7.3.0_sqlanywhere_r.so 这将导致一个错误: 警告:[p

我们用CentOS、Plesk和php fpm开发了一个新的Web服务器。 现在我们没有运行php扩展

我们所做的:

  • 已安装最新的SQL Anywhere 17(ebf29577)
  • 将php-7.3.0_sqlanywhere_r.so复制到/opt/plesk/php/7.3/lib64/php/modules/
  • 通过/opt/plesk/php/7.3/etc/php.d/sqlanywhere.ini加载php-7.3.0_sqlanywhere_r.so
  • 这将导致一个错误: 警告:[pool plesk-php73-fpm.plesk service.localdomain]child 11616对stderr说:“注意:PHP消息:PHP警告:sqlanywhere模块的请求_startup()在第0行的未知位置失败” (这导致php 7.3 fpm根本没有加载)
  • 下一次尝试是从FPM切换到CGI:同样的错误
  • 如果LD_LIBRARY_PATH使用PATH/opt/sqlanywhere 17/lib64进行了增强,则模块本身可以在shell中加载/
  • 有些人试图通过strace找到原因,但没有帮助
有人有想法,甚至可能成功安装了php扩展

谢谢
Florian

经过大量测试,我们找到了解决方案: 在Plesk域php设置中,我们必须添加:

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

现在所有的lib都找到了,并且可以正常工作了

对于我来说,解决方案是,创建自定义处理程序:

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

前进一步:/opt/plesk/php/7.3/bin/php-c/opt/plesk/php/7.3/etc/php.ini-i在以root用户身份运行时返回一个正确完整的phpinfo,并带有扩展名。但是作为用户,它返回错误消息。php-我返回想要的结果,但是当php fpm在Web服务器中运行时,不可能得到相同的结果。phpinfo中的Box环境仅将用户和主页显示为变量。我找不到添加更多变量的方法。