Debian 8-curl/php 以及从源代码编译的问题

Debian 8-curl/php 以及从源代码编译的问题

我尝试将 php 应用程序移动到新服务器。

虽然在旧服务器上 curl php 调用在新服务器上正常运行,但我收到错误:

{“error”:“需要引用源标头”}

由于两台服务器的 Debian、PHP 和 curl 版本不同,我尝试在新服务器上从源代码编译 curl 7.51。简单的编译成功,然后我安装了新版本的 curl。但我仍然没有新的 php curl 模块。当我尝试在 php 中包含 libcurl.so 时,它会报错

PHP 警告:PHP 启动:无效库(可能不是 PHP 库)‘/usr/local/lib/libcurl.so’,位于第 0 行未知中

两个服务器上 curl 中启用的功能存在一些差异。我想在编译时启用一些功能,但我无法让这个新版本与 php 配合使用。而且它似乎没有在编译时启用这些功能,我运行

./configure--启用调试--使用-gssapi

但是在 make && make install 之后,这些功能在新版本中仍然未启用。

  1. 如何获取可包含在 php 中的模块的新编译版本?
  2. 如何获取启用了某些功能的 php 新 curl 模块?

在旧服务器上安装了 Debian Wheezy:

PHP 5.4.39-0+deb7u2

curl 7.26.0 (x86_64-pc-linux-gnu) libcurl/7.26.0 OpenSSL/1.0.1e zlib/1.2.7 libidn/1.25 libssh2/1.4.2 librtmp/2.3 协议:dict file ftp ftps gopher http https imap imaps ldap pop3 pop3s rtmp rtsp scp sftp smtp smtps telnet tftp 功能:调试 GSS-Negotiate IDN IPv6 大文件 NTLM NTLM_WB SSL libz TLS-SRP

在新服务器上安装了 Debian Jessie:

PHP 5.6.27+dfsg-0+deb8u1

curl 7.38.0 (x86_64-pc-linux-gnu) libcurl/7.38.0 OpenSSL/1.0.1t zlib/1.2.8 libidn/1.29 libssh2/1.4.3 librtmp/2.3 协议:dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp scp sftp smtp smtps telnet tftp 功能:AsynchDNS IDN IPv6 大文件 GSS-API SPNEGO NTLM NTLM_WB SSL libz TLS-SRP

多谢,

雅罗斯瓦夫

答案1

将复杂系统从具有较旧软件基础架构的服务器移至具有较新软件基础架构的服务器(尤其是较新版本)时,始终存在与其他系统不兼容的风险。特别是如果您要迁移的系统包含准备与比已安装版本更旧的第三方软件(程序、库)配合使用的模块。一般来说,您必须通过创建一致的环境来解决此类问题。这可以通过升级 php 模块或/和降级第三方软件(程序、库)来实现

如何获取可包含在 php 中的模块的新编译版本?

好吧,如果它是可供公众使用的模块,那么请检查 Debian 存储库中的软件包。它有 php5-curl(详情请见https://packages.debian.org/stable/php/php5-curl)这可能会有用。

不同版本之间模块配置或界面最终可能存在差异,从而导致一些问题。

但是,如果您要迁移到新服务器的系统的作者以任何方式更改了 tat 模块的代码,那么您将必须查阅源代码(如果它有存储库,则查阅与模块相关的正确文件的提交)。

如何获取启用某些功能的 php 新 curl 模块

您可以更改 Debian 附带的源模块包或从开发人员的存储库中获取它并根据您的需要进行配置。

但请始终记住,一般来说,软件包的修改最终可能会导致一些安全问题或与您的系统不兼容,因此应该明智地进行修改。

如果失败,您可以尝试将 curl 降级到与旧服务器上安装的版本相同的版本。使用现有的 Debian 基础架构或手动操作。但 Debian 不会自动升级系统中不来自 Debian 存储库的每个部分。如果置之不理,可能会导致安全性和稳定性问题。所以这是一种不太方便(也不太安全)的方法。

相关内容