【问题标题】:Error when loading a php module加载 php 模块时出错
【发布时间】:2015-10-13 15:23:44
【问题描述】:

我在 /etc/php/7.0/cli/php.ini 中添加了 curl 模块:

extension = /usr/lib/php5/20121212/curl.so

但是当我重新启动 php 时:

php -m

我得到这个错误:

curl : Unable to initialize module
Module compiled with module API=20121212
PHP    compiled with module API=20141010
These options need to match

我也试过了:

apt-get install php5-curl

Curl 是“已经到了新版本”。


而 phpinfo() 告诉 php5 正在运行:

PHP Version 5.5.9
php.ini Path :  /etc/php5/fpm 
PHP Extension : 20121212 

但是当我检查服务器时:

which php  => /usr/bin/php  (for php7)
php -v     => PHP 7.0  (with a warning before "Unable to initialize module")

如果我在上面的 php.ini 中删除 curl.so(php7 的第 1 行),警告就会消失。

---------------------------------------

所以我添加了:extension=/usr/lib/php5/20121212/curl.so

在:

/etc/php5/fpm/php.ini

然后我重新启动,但我仍然看不到这个模块:

这里的错误说这个模块仍然丢失:

【问题讨论】:

  • 好吧,你必须像安装 PHP 一样安装 curl(你不会真的这么说)。您是否 100% 确定 php5-curl 包含 PHP 7 的 curl?
  • 谢谢你的回答,但我也试过“apt-get install curl”,完全一样,也安装了,php7有特定的curl包吗?

标签: php unix ubuntu curl nginx


【解决方案1】:

因此,如果您尝试将模块添加到网络服务器的 PHP(在您的情况下为 PHP5),则需要将该模块添加到 /etc/php5/fpm/php.ini(基于您之前声明使用 NGINX+PHP 的问题) -FPM)。

如果你想将它添加到 CLI 版本 - 你做错了,因为你正在将 PHP5 模块添加到 PHP7 - 这不起作用,你需要安装 php7-curl 它会自动添加需要的地方。


详细说明。你的phpinfo() 告诉你你的INI 路径在/etc/php5/fpm

PHP Version 5.5.9 
php.ini Path :  /etc/php5/fpm  
PHP Extension : 20121212

因此,要将任何扩展添加到 特定的 PHP - 只需将它们添加到 /etc/php5/fpm/php.ini。请注意,您不能(或很少)将扩展从一个 PHP 版本添加到另一个 PHP 版本。


我将添加 OP 系统上发生的事情的摘要,以供将来参考。

基本上,OP 在系统上同时安装了 2 个版本的 PHP,PHP5 和 PHP7 以及带有 php-fpm 扩展名的 NGINX werserver。

他的 NGINX 配置为使用 PHP5,而 CLI PHP 默认为 PHP7。

与 OP 的混淆源于这样一个事实,即在 Ubuntu 系统上,从 CLI 调用的 PHP 和 Web 服务器使用的 PHP 之间存在明显的区别。

CLI 工具以/usr/bin/php5/usr/bin/php7 为每个版本提供,其中一个默认链接/usr/bin/php 指向一个特定版本,在本例中为PHP7。

对于 FPM 模块,有两个可用的包php5-fpmphp7-fpm,分别在/etc/php5/fpm/php.ini/etc/php/7.0/php.ini 中配置。

对于 CLI,还有 2 个可用的包 - php5-cliphp7-cli,分别在 /etc/php5/cli/php.ini/etc/php/7.0/cli/php.ini 中配置配置。

对于 curl 扩展,有同样的故事,php5-curlphp7-curl。 deb 安装程序会自动将扩展连接到所需的 INI 文件。

为了好玩而安装多个版本的 PHP 会造成这种混乱。 :)

【讨论】:

  • 再次非常感谢你,我试过了,我用你所说的更新了问题,我认为我们正在接近解决方案,但我还看不到这个模块..
  • 呵呵,cli PHP 又不同于 fpm。你是什​​么意思你“重新启动php”?你是怎么做到的?
  • 服务 php5-fpm 重启
  • 如果你想在 both cli PHP 和 FPM PHP 中拥有该模块,你还需要将它添加到 /etc/php5/cli/php.ini 中,然后检查 /usr/bin/php5 -m
  • 是的,我们将被版主禁止,@curls 将失去他所有的积分:P
【解决方案2】:

这意味着您的 CURL 模块是针对不同版本的 PHP 编译的。根据您的 Linux 风格(看起来像 Debian 风格),您可能需要安装一个模块

sudo apt-get install php5-curl

【讨论】:

  • 谢谢,但我试了这百万次,它“已经到最新版本了”
  • 好的,那么安装的是什么版本的php-5-curl?
  • curl 版本是 7.35.0 来自 phpinfo()
  • 对不起,我的意思是 php5-curl 包。它是什么版本? CURL 本身的版本无关
  • 好吧,抱歉,我该如何检查?我还用一些奇怪的东西更新了这个问题
【解决方案3】:

打电话给您的托管公司,看看他们有哪些可用的版本以及您的代码正在使用哪个版本?

也许他们有一些独特的设置,以一种你想象不到的方式挑选版本(你不会想象。)

【讨论】:

  • 不想投反对票,但这个答案完全具有误导性。 OP显然是在运行自己的服务器,与托管公司无关。
  • 对我来说也一样,不想投反对票,但我也对这个答案感到惊讶
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-13
  • 1970-01-01
  • 2019-09-26
  • 2010-12-17
  • 2018-03-05
  • 2016-08-04
相关资源
最近更新 更多