PHP启动无法加载动态库

PHP启动无法加载动态库

当我尝试让 cURL 在 PHP 上运行的时候,我在 apache 错误日志中收到此错误:

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20121212/curl.so' - /usr/lib/php5/20121212/curl.so: symbol curl_easy_pause, version CURL_OPENSSL_3 not defined in file libcurl.so.4 with link time reference in Unknown on line 0

它引用的文件位于该位置,我试图找出在为 PHP 安装 curl 时是否遗漏了任何依赖项。当我curl -V在命令行上使用时没有错误。

我尝试过以下命令:

sudo apt-get install php5-curl
sudo apt-get update
sudo apt-get install openssl

我还尝试完全删除 php 并使用以下命令从头开始安装它:

sudo apt-get install php5-common libapache2-mod-php5 php5-cli

然后:

sudo apt-get install php5-curl

我在这里遗漏了什么?

我的软件版本:

PHP 5.5.9-1ubuntu4.2 (cli) (built: Jun 25 2014 17:17:37) 
curl 7.16.0 (x86_64-unknown-linux-gnu) libcurl/7.16.0
Ubuntu 14.04

提前致谢

答案1

您的系统中安装了两个不同版本的 libcurl:

  • libcurl3.solibcurl4.so这是指向的符号链接libcurl.so.4.3.0

lrwxrwxrwx 1 root root 12 4月 1 13:43 /usr/lib/x86_64-linux-gnu/libcurl.so.3 -> libcurl.so.4 lrwxrwxrwx 1 root root 16 4月 1 13:43 /usr/lib/x86_64-linux-gnu/libcurl.so.4 -> libcurl.so.4.3.0 -rw-r--r-- 1 root root 422696 4月 1 13:43 /usr/lib/x86_64-linux-gnu/libcurl.so.4.3.0

  • libcurl.so.4 的本地版本,它是指向 libcurl.so.4.0.0 的链接。

lrwxrwxrwx 1 root root 16 六月 18 09:26 /usr/local/lib/libcurl.so.4 -> libcurl.so.4.0.0 -rwxr-xr-x 1 root root 1146079 六月 18 09:26 /usr/local/lib/libcurl.so.4.0.0

这个本地库/usr/local/lib/libcurl.so.4之前已经加载过了/usr/lib/x86_64-linux-gnu/libcurl.so.4。我们可以看到ld 图书馆秩序使用命令strings /etc/ld.so.cache

正如我所看到的find / -name "*libcurl*" -exec ls -l {} \; -print 输出,你安装了一个源包libcurl-7.16.0并且/usr/local/src/curl-7.16.0/我猜你已经编译并生成了/usr/local/lib/libcurl.so.4.0.0

curl_easy_pauselibcurl 中存在缺失的方法,因为7.18.0这就是我收到错误的原因,您的系统正在使用libcurl-7.16.0

为了修复此问题,请删除错误的 libcurl 并更新 ld.so 缓存:

     sudo rm /usr/local/lib/libcurl*
     sudo ldconfig -v

我建议删除/usr/local/src/curl-7.16.0目录以防止任何其他类型的问题。

相关内容