Composer 安装:缺少 json 扩展名
Posted
技术标签:
【中文标题】Composer 安装:缺少 json 扩展名【英文标题】:Composer installing: the json extension is missing 【发布时间】:2015-02-10 18:49:18 【问题描述】:我在 Linux 终端中写道:
curl -s https://getcomposer.org/installer | php
它说:
#!/usr/bin/env php
Some settings on your machine make Composer unable to work properly.
Make sure that you fix the issues listed below and run this script again:
The json extension is missing.
Install it or recompile php without --disable-json
我这样做了:apt-get install php5-json
所以,我认为,它已安装。但奇怪的是,当我写php -m
它给了我一个没有 json 的列表:
[PHP Modules]
bcmath
bz2
calendar
Core
ctype
date
dba
dom
ereg
exif
fileinfo
filter
ftp
gettext
hash
iconv
libxml
mbstring
mhash
openssl
pcntl
pcre
Phar
posix
Reflection
session
shmop
SimpleXML
soap
sockets
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xml
xmlreader
xmlwriter
zip
zlib
[Zend Modules]
当我写php5-fpm -m
它发送这个:
[PHP Modules]
bcmath
bz2
calendar
cgi-fcgi
Core
ctype
curl
date
dba
dom
ereg
exif
fileinfo
filter
ftp
gettext
hash
iconv
json
libxml
mbstring
mcrypt
mhash
mysqli
openssl
pcre
PDO
pdo_mysql
Phar
posix
Reflection
session
shmop
SimpleXML
soap
sockets
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xml
xmlreader
xmlwriter
zip
zlib
[Zend Modules]
我做错了什么?我在 GitHub 和 Google 上都没有找到解决方案
【问题讨论】:
愚蠢的问题:你重启了服务器,不是吗? 是的,我做到了。不幸的是,它没有帮助 【参考方案1】:我遇到了同样的错误,但不同的是,当我运行 php -m
时,json
模块没有列出,所以我只是使用以下命令安装了 json PHP 模块:
sudo yum install php-json
错误已修复,我可以安装 composer。我使用的是 CentOS 8 流,PHP7.2。
【讨论】:
【参考方案2】:您可能需要在php.ini
文件中启用扩展。要找出命令行 PHP 的位置,请执行
php --ini
你应该看到这样的一行
加载的配置文件:/path/to/php.ini
打开该文件并查找extension=json.so
。如果它在那里,请取消注释。如果没有,请将其添加。现在您应该看到 json
在您执行 php -m
时列出,并且 composer 应该可以工作。
【讨论】:
在我的情况下,我正在运行的命令行 php 可执行文件显然不是我想的那样——我刚刚在 Windows 上安装了 PHP,并且正在从 cygwin 运行命令,其中 PHP 的旧版本是也安装了。 这不适用于 PHP 7。【参考方案3】:Bug php 不加载扩展安装
创建文件 php.ini
# /etc/php/7.2/cli/conf.d/php.ini
extension=json.so
extension=phar.so
extension=iconv.so
【讨论】:
【参考方案4】:在我的 ubuntu 14.04 上,我发现 php.ini 文件 /etc/php5/cli/ 的默认权限将文件限制为仅限 Root 用户,所以如果你运行:
php -m
作为非 root 用户,你获得的模块比运行时少得多 sudo php -m
这个问题的修复是由我来执行的:
sudo chmod a+rx /etc/php5/cli/* -R
授予每个人对该文件夹及其内容的读取和执行权限。
【讨论】:
【参考方案5】:在带有 PHP 7.2 的 Centos 8 上,经过全面研究,我得出的结论是,修复它的唯一可靠方法是重新安装最新版本的 PHP。 (7.4 对我来说是最新版本)在这里你可以找到其他有相同结论的人; laracasts
【讨论】:
【参考方案6】:你可以使用:-
sudo apt-get install php-json
命令。 并更正目录。 这样你的错误就会得到解决。
【讨论】:
以上是关于Composer 安装:缺少 json 扩展名的主要内容,如果未能解决你的问题,请参考以下文章
安装 Composer 失败并出现“缺少 openssl 扩展”错误
Docker 缺少 PHP 扩展的 Composer 安装(自己的容器)
Composer:您的系统中缺少请求的 PHP 扩展 ext-intl *
Composer 警告:缺少 openssl 扩展。如何在 WAMP 中启用