2018年3月28日 星期三

[ubuntu] Ubuntu 16.04 install php7.0 solve dpkg: error processing package php7.0-common (--configure): post-installation script


因為更新完ubuntu 系統,使用php-cs-fixer 出現 PHP Fatal error: Call to undefined function json_decode() 錯誤。
使用 php -m 看一下是不是特定module沒有載入。

% php -m                                                                                                                                                                         
[PHP Modules]
calendar
Core
ctype
date
exif
fileinfo
filter
ftp
gettext
hash
iconv
libxml
openssl
pcntl
pcre
PDO
Phar
posix

[Zend Modules]

看的出來並沒有載入 json module

$sudo apt-cache search php7.0 | grep json                                                                                                                                            
php7.0-json - JSON module for PHP
$sudo apt-get install php7.0-json

結果出現了
dpkg: error processing package php7.0-common (--configure): post-installation script  

嘗試過很多方法最後
apt purge apache2*
apt purge php*
rm -rf /etc/apache2 /etc/php

root@pccm:/var/lib/dpkg/info# rm -rf ./*
root@pccm:/var/lib/dpkg/info# apt-get install --reinstall php7.0
root@pccm:/var/lib/dpkg/info# php --ini
Configuration File (php.ini) Path: /etc/php/7.0/cli
Loaded Configuration File:         (none)
Scan for additional .ini files in: /etc/php/7.0/cli/conf.d
Additional .ini files parsed:      (none)
root@pccm:/var/lib/dpkg/info# php --ini
Configuration File (php.ini) Path: /etc/php/7.0/cli
Loaded Configuration File:         /etc/php/7.0/cli/php.ini
Scan for additional .ini files in: /etc/php/7.0/cli/conf.d
Additional .ini files parsed:      (none)

這裡個 ini 檔是從 /usr/lib/php/7.0 複製到對應路徑的
php-cli 會在每次使用載入module ,php -m 看看有無載入module 。
如果沒有再檢查 php.ini 的設定
# vim /etc/php/7.0/cli/php.ini
加入

root@pccm:/etc/php/7.0/cli# cat php.ini  | grep "^extension"
extension=calendar.so
extension=ctype.so
extension=exif.so
extension=fileinfo.so
extension=ftp.so
extension=gettext.so
extension=iconv.so
extension=json.so
extension=pdo.so
extension=phar.so
extension=posix.so
extension=readline.so
extension=shmop.so
extension=sockets.so
extension=sysvmsg.so
extension=sysvsem.so
extension=sysvshm.so
extension=tokenizer.so

在使用php -m 就會看到載入的module了

root@pccm:/etc/php/7.0/cli# php -m
[PHP Modules]
calendar
Core
ctype
date
exif
fileinfo
filter
ftp
gettext
hash
iconv
json
libxml
openssl
pcntl
pcre
PDO
Phar
posix
readline
Reflection
session
shmop
sockets
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
zlib

[Zend Modules]

沒有留言:

張貼留言