我在/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之一)警告消失。
所以我补充说:extension = / usr / lib / php5 / 20121212 / curl.so
in:
/etc/php5/fpm/php.ini
然后我重新启动,但我仍然看不到这个模块:
这里的错误说这个模块仍然缺失:
答案 0 :(得分:1)
因此,如果您正在尝试将模块添加到网络服务器的PHP(在您的案例中为PHP5),则需要将该模块添加到/etc/php5/fpm/php.ini
(基于您之前的问题,你声明你使用NGINX + PHP-FPM。
如果你想将它添加到CLI版本 - 你做错了,因为你要将PHP5模块添加到PHP7 - 这不会起作用,你需要安装{{1它将在需要的地方自动添加。
详细说明。您的php7-curl
告诉您,您的INI路径位于phpinfo()
:
/etc/php5/fpm
因此,要向添加特定PHP的任何扩展 - 只需将它们添加到PHP Version 5.5.9
php.ini Path : /etc/php5/fpm
PHP Extension : 20121212
即可。注意,您不能(或很少)将扩展从一个版本的PHP添加到另一个版本的PHP。
我将在OP系统中添加一些摘要,以供将来参考。
基本上,OP同时在系统上安装了2个PHP版本,PHP5和PHP7,带有/etc/php5/fpm/php.ini
扩展名的NGINX werserver。
他的NGINX配置为使用PHP5,而CLI PHP默认为PHP7。
与OP的混淆来自于这样一个事实,即在Ubuntu系统上,从CLI调用的PHP与网络服务器使用的PHP之间存在明显差异。
每个版本的CLI工具可用php-fpm
和/usr/bin/php5
,其中一个默认链接/usr/bin/php7
指向一个特定版本,在本例中为PHP7。
对于FPM模块,有2个可用的包/usr/bin/php
和php5-fpm
,其中包含php7-fpm
和/etc/php5/fpm/php.ini
中的相应配置。
对于CLI,还有2个可用的包 - /etc/php/7.0/php.ini
和php5-cli
,以及php7-cli
和/etc/php5/cli/php.ini
中的相应配置。
对于卷曲扩展,有相同的故事/etc/php/7.0/cli/php.ini
和php5-curl
。扩展程序将由deb安装程序自动连接到所需的INI文件。
安装多个版本的PHP以获得乐趣可能会产生这种混淆。 :)
答案 1 :(得分:0)
这意味着您的CURL模块是针对不同版本的PHP编译的。根据您的Linux风格(看起来像Debian风格),您可能需要安装模块
sudo apt-get install php5-curl
答案 2 :(得分:0)
如果要求您的托管公司查看他们可用的版本以及您的代码中哪些版本正在使用?
也许他们有一些独特的设置,以你想象的方式挑选版本(一个人不会想象。)