Edited at

【PHP】追加したモジュールが読み込めない時に疑うポイント

More than 3 years have passed since last update.

追加したモジュールが読み込めない

つまり以下のようなエラーが発生する時である

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/XXXXXX.so' - /usr/lib64/php/modules/XXXXXX.so: cannot open shared object file: No such file or directory in Unknown on line 0


モジュールが追加されているかを確認

エラーで指定されている場所にモジュールがあるかを確認してみる。

[root@test-web ~]# ll /usr/lib64/php/modules/ | grep XXXXXX

-rwxr-xr-x 1 root root 346117 Jun 7 10:14 XXXXXX.so
[root@test-web ~]#


番外編:php.iniの探し方

php --iniコマンドで、一番上に書かれているphp.iniが読まれている。

今回の場合は'/etc/php.ini'が該当する

[root@test-web ~]# php --ini

Configuration File (php.ini) Path: /etc
Loaded Configuration File: /etc/php.ini
Scan for additional .ini files in: /etc/php.d
Additional .ini files parsed: /etc/php.d/bz2.ini,
/etc/php.d/calendar.ini,
/etc/php.d/ctype.ini,
/etc/php.d/curl.ini,
/etc/php.d/dom.ini,
/etc/php.d/exif.ini,
/etc/php.d/fileinfo.ini,
/etc/php.d/ftp.ini,
/etc/php.d/gettext.ini,
/etc/php.d/gmp.ini,
/etc/php.d/iconv.ini,
/etc/php.d/json.ini,
/etc/php.d/mbstring.ini,
/etc/php.d/mcrypt.ini,
/etc/php.d/mysqlnd.ini,
/etc/php.d/mysqlnd_mysqli.ini,
/etc/php.d/opcache.ini,
/etc/php.d/pdo.ini,
/etc/php.d/pdo_mysqlnd.ini,
/etc/php.d/pdo_sqlite.ini,
/etc/php.d/phar.ini,
/etc/php.d/posix.ini,
/etc/php.d/shmop.ini,
/etc/php.d/simplexml.ini,
/etc/php.d/sockets.ini,
/etc/php.d/sqlite3.ini,
/etc/php.d/sysvmsg.ini,
/etc/php.d/sysvsem.ini,
/etc/php.d/sysvshm.ini,
/etc/php.d/tokenizer.ini,
/etc/php.d/xml.ini,
/etc/php.d/xml_wddx.ini,
/etc/php.d/xmlreader.ini,
/etc/php.d/xmlwriter.ini,
/etc/php.d/xsl.ini,
/etc/php.d/zip.ini

[root@test-web ~]#


grepで出てきた場合

php.iniのextension_dirの指定が抜けていないかを確認

コメントアウトされている場合は以下のように記述


php.ini

extension_dir = "/usr/lib64/php/modules"



grepで出てこなかった場合

findコマンドで他の場所にないかを探してみる

[root@test-web ~]# find / -name 'XXXXXX.so'

/usr/local/php-5.5.14/lib/php/extensions/no-debug-non-zts-20121212/XXXXXX.so
[root@test-web ~]#

php.iniでの読み込ませる際にディレクトリごと指定してみる。

extension=/usr/local/php-5.5.14/lib/php/extensions/no-debug-non-zts-20121212/XXXXXX.so


php.iniを操作したら必ずやること


httpdプロセスの再起動

[root@test-web ~]# /etc/init.d/httpd restart

Stopping httpd: [ OK ]
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
[ OK ]
[root@test-web ~]#