Ubuntuで提供されるアプリケーションには簡単にモジュールのON/OFFを切り替えることができるコマンドが備わっているものがあります。
PHPもその一つで、PHPのモジュールを簡単にON/OFFできるコマンドが用意されています。
sudo phpenmod モジュール名 #モジュール(PHP Extension)の有効化
sudo phpdismod モジュール名 #モジュール(PHP Extension)の無効化
$ php -m
[PHP Modules]
calendar
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
gettext
hash
iconv
json
libxml
mbstring
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
Phar
posix
readline
Reflection
session
shmop
SimpleXML
sockets
sodium
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xml
xmlreader
xmlwriter
xsl
Zend OPcache
zip
zlib
[Zend Modules]
Zend OPcache
例えば、上記のモジュールがインストールされているPHPの環境から、”ftp”モジュールを無効化したいとします。
その場合は、次のコマンドで無効化できます。
sudo phpdismod ftp
$ sudo phpdismod ftp
$ php -m
[PHP Modules]
calendar
Core
ctype
curl
date
dom
exif
fileinfo
filter
gd
gettext
hash
iconv
json
libxml
mbstring
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
Phar
posix
readline
Reflection
session
shmop
SimpleXML
sockets
sodium
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xml
xmlreader
xmlwriter
xsl
Zend OPcache
zip
zlib
[Zend Modules]
Zend OPcache
一覧からftpモジュールが消えていますね。
再度有効化する場合は以下のようにします。
sudo phpenmod ftp
$ sudo phpenmod ftp
$ php -m
[PHP Modules]
calendar
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
gettext
hash
iconv
json
libxml
mbstring
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
Phar
posix
readline
Reflection
session
shmop
SimpleXML
sockets
sodium
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xml
xmlreader
xmlwriter
xsl
Zend OPcache
zip
zlib
[Zend Modules]
Zend OPcache
ちゃんとftpモジュールが復活しました。
どういう仕組みになっているのかというと、
/etc/php/phpのバージョン番号/mods-available
ディレクトリに、各PHPモジュールの設定ファイルが入っており、phpenmodコマンドが実行されると、指定されたモジュールの設定ファイルのシンボリックリンクが
/etc/php/phpのバージョン番号/*/conf.d
に張られる仕組みとなっています。
逆にphpdismodした場合はシンボリックリンクが削除されるようになっています。
通常、設定ファイルを無効化するときはモジュールの設定ファイル名を
モジュール名.ini_disable
のようにして手動で無効化する必要がありますが、これをワンコマンドで操作できるのは非常に楽ですね。
ただし、phpenmod/phpdismod でコントロールできるモジュールはmods-availableに設定ファイルがあるモジュールのみで、php.iniにモジュール読み込みの記述があったり、phpに組み込みになっているモジュールだったりする場合は、今回のコマンドでコントロールできないので注意が必要です。
Ubuntuには、他にもApacheなどに同じような仕組みが備わっています。
とても便利なので、Ubuntuで環境を構築する際は是非使ってみてください。