安装PHP 7后,我的服务器无法加载PHP模块

6
我将PHP 7安装到我的服务器上(结果是我没有/etc/php5和/etc/php/7.0)。当我运行我的Web应用程序时,我无法看到以前的CURL(或fork)。

一开始我得到了这个错误消息:

Message: Call to undefined function curl_init()

在安装php7-curl之后,我启用了它-在info()函数和这个测试代码中得到了验证:

var_dump(_isCurl());
function _isCurl(){
    return function_exists('curl_version');
}

返回TRUE。

但是,当我的代码中有一个实际的CURL时,我会遇到以下错误:

PHP警告:PHP启动时无法加载动态库'/usr/lib/php/20151012/php_curl.dll' - /usr/lib/php/20151012/php_curl.dll:在未知的第0行无法打开共享对象文件:没有这样的文件或目录

/usr/lib/php/20151012/中,我只有.so文件,这没有意义(同样适用于/usr/lib/php5/20131226文件夹)。那么它试图从那里获取什么?为什么?

如何配置我的新php.ini文件以获得先前的模型设置?(如果可能,启用PCNTL_FORK)如何使它与curl一起工作?发生了什么?

编辑04.05.2016:

好吧,我决定将其更改为curl.so,现在收到此消息PHP警告:模块“curl”已在未知的第0行中加载,然后我将其禁用,不知何故,curl现在正在运行(注释掉curl;extension:curl.so;extension:php_curl.dll。到底发生了什么。


你想同时拥有两个版本吗? - Álvaro González
不,但我希望保留php.ini的旧设置:X。 - Imnotapotato
这是你要建议的吗? root@YHserver:/usr/lib/php5/20131226# sudo a2dismod php5 Module php5 already disabled不起作用... - Imnotapotato
2
在 Linux 服务器上放置一个 .dll(Windows!)文件是没有意义的。将 php_curl.dll 更改为 curl.so(或 php_curl.so,无论文件叫什么),然后重试。 - Elias Van Ootegem
我并没有提出任何建议。你的问题陈述中写着“我没有/etc/php5和/etc/php/7.0”,这相当令人困惑,而且你似乎正在从不同版本的库中加载。我只是不知道你在尝试做什么。 - Álvaro González
显示剩余5条评论
4个回答

15

我遇到过完全相同的问题。

我刚刚花了几个小时尝试修复一些东西,在匆忙中出于某种原因启用了这行代码:

extension:php_curl.dll

显然,正如某人所说,这毫无意义,但在你这样做之后错误信息很奇怪。 运行apt-get dist-upgrade 并没有解决问题。

所以,在拔掉更多头发并重新阅读了这篇文章100遍后,我只是把它注释掉了。

;extension:php_curl.dll

好的,问题解决了。

所以原帖作者一定像我一样... 边工作边喝啤酒。


我也有同样的经历 :p - Keutelvocht

7

运行apt-get dist-upgrade修复了所有问题 :)


哇,这对我也有效,我正在使用Ubuntu 18.04.3 LTS,我使用上面的命令加sudo。谢谢。 - Sujeet malvi

3

在我的情况下,使curl工作:

  • 运行命令:sudo apt-get install php-curl
  • 在php.ini中(例如/etc/php/7.1/cli/php.ini)注释掉curl扩展:;extension=php_curl.dll

0

当同时安装两个版本的PHP(例如7.0和7.3)时,设置可能会混乱。这可能是由于最近的dist-upgrade引起的。错误的模块版本可能会被加载。在我的情况下,使用apt purge php7.0并重新安装7.3解决了问题,当然您可能不想对自己的系统如此粗暴...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接