ログインしていません。

アナウンス

連絡: このフォーラムは利用が少なく、主としてスパムの投稿が多いため、閉鎖いたしました。今後は閲覧のみ可能で、新しい投稿はできなくなります。Arch Linuxに関する日本語のコミュニケーションにはSlackコミュニティをご利用ください。

#1 2018-01-16 03:54:37

nm
メンバー
登録日: 2016-01-19
投稿: 5

PHP でモジュールがロードされない?

表題の通りなのですが、いつごろからか PHP を使ったウェブアプリケーションのいくつかでエラーが出るようになっていました。
そのうち、PostfixAdmin および phpMyAdmin のエラーによると、mysqli モジュールが読み込まれていないとの内容でした。
しかし、以下のことを確認しましたが、問題解決に至りませんでした。
このほかに確認する事項はありますでしょうか?

- php.ini の内容
extension_dir は正しく /usr/lib/php/modules/ に設定されている。
module=mysqli.so および module=pdo_mysql 行はコメントを外している。
上記内容を確認したのち、systemctl restart httpd.service を実行している。

- php -m の内容
ここでは正しく、mysqliモジュールが呼び出されている。

- phpinfo() の内容
ここではモジュールが読み込まれていない(ように見える)。
# Loaded Modules に列挙されていない。
/etc/php/php.ini は読み込まれている。
# Loaded Configuration File には /etc/php/php.ini が表示されている。

オフライン

#2 2018-01-17 10:12:52

kusanaginoturugi
モデレータ
登録日: 2015-12-04
投稿: 43

Re: PHP でモジュールがロードされない?

https://wiki.archlinux.jp/index.php/Apa … Server#PHP
PHPの設定が以前と変っているので、そのあたりも修正はされました?

> # Loaded Modules に列挙されていない。
これはapacheのModulesの表示なので、関係ないように思います。

オフライン

#3 2018-01-17 12:50:13

nm
メンバー
登録日: 2016-01-19
投稿: 5

Re: PHP でモジュールがロードされない?

ご返信いただきありがとうございます。

- php および php-apache パッケージはインストールされている。
- mpm_event_module をコメントアウトし mpm_prefork_module をアンコメントしている。
- LoadModule php7_module modules/libphp7.so 行を設定している。
- AddHandler php7-script php こちらは抜け落ちていたので追記しました。
- Include conf/extra/php7_module.conf 行を設定している。
- 以上を確認後 systemctl restart httpd.service を実行している。

ことを今一度確認しましたが、やはり mysqli モジュールがロードされていないようにエラーが表示されます。

> > # Loaded Modules に列挙されていない。
> これはapacheのModulesの表示なので、関係ないように思います。

これは失礼しました。phpinfo() ではロードしているモジュールを確認する方法はないのでしょうか?

オフライン

#4 2018-01-18 07:14:44

nm
メンバー
登録日: 2016-01-19
投稿: 5

Re: PHP でモジュールがロードされない?

なんとか自力での解決に至ったので報告させていただきます。

原因: PHP とモジュール間のバージョン不整合による不具合。

Apache のエラーログを眺めていたところ、

PHP Warning:  PHP Startup: bz2: Unable to initialize module\nModule compiled with module API=20160303\nPHP    compiled with module API=20170718\nThese options need to match\n in Unknown on line 0
PHP Warning:  PHP Startup: curl: Unable to initialize module\nModule compiled with module API=20160303\nPHP    compiled with module API=20170718\nThese options need to match\n in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library 'dba.so' (tried: /usr/lib/php/modules/dba.so (/usr/lib/php/modules/dba.so: undefined symbol: spprintf), /usr/lib/php/modules/dba.so.so (/usr/lib/php/modules/dba.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library 'exif.so' (tried: /usr/lib/php/modules/exif.so (/usr/lib/php/modules/exif.so: undefined symbol: vspprintf), /usr/lib/php/modules/exif.so.so (/usr/lib/php/modules/exif.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP Warning:  PHP Startup: gd: Unable to initialize module\nModule compiled with module API=20160303\nPHP    compiled with module API=20170718\nThese options need to match\n in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library 'iconv.so' (tried: /usr/lib/php/modules/iconv.so (/usr/lib/php/modules/iconv.so: undefined symbol: php_base64_decode), /usr/lib/php/modules/iconv.so.so (/usr/lib/php/modules/iconv.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library 'mcrypt.so' (tried: /usr/lib/php/modules/mcrypt.so (/usr/lib/php/modules/mcrypt.so: undefined symbol: spprintf), /usr/lib/php/modules/mcrypt.so.so (/usr/lib/php/modules/mcrypt.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library 'mysqlnd.so' (tried: /usr/lib/php/modules/mysqlnd.so (/usr/lib/php/modules/mysqlnd.so: cannot open shared object file: No such file or directory), /usr/lib/php/modules/mysqlnd.so.so (/usr/lib/php/modules/mysqlnd.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library 'mysqli.so' (tried: /usr/lib/php/modules/mysqli.so (/usr/lib/php/modules/mysqli.so: undefined symbol: vspprintf), /usr/lib/php/modules/mysqli.so.so (/usr/lib/php/modules/mysqli.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library 'pdo_mysql.so' (tried: /usr/lib/php/modules/pdo_mysql.so (/usr/lib/php/modules/pdo_mysql.so: undefined symbol: strpprintf), /usr/lib/php/modules/pdo_mysql.so.so (/usr/lib/php/modules/pdo_mysql.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library 'zip.so' (tried: /usr/lib/php/modules/zip.so (/usr/lib/php/modules/zip.so: undefined symbol: spprintf), /usr/lib/php/modules/zip.so.so (/usr/lib/php/modules/zip.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0

のようなログを吐いていました。そこで php に関するパッケージを調べたところ、
$ pacman -Qs php
local/drupal 8.4.4-1
    A PHP-based content management platform
local/php-apache 7.2.1-1
    Apache SAPI for PHP
local/php-geoip 1.1.1-3
    GeoIP module for PHP
local/php-imap 7.2.1-1
    imap module for PHP
local/php-intl 7.2.1-1
    intl module for PHP
local/php-mcrypt 7.1.12-1
    mcrypt module for PHP
local/php-xcache 3.2.0-2
    A PHP opcode cacher
local/php71 7.1.13-3
    A general-purpose scripting language that is especially suited to web
    development
local/php71-gd 7.1.13-3
    gd module for PHP
local/phpmyadmin 4.7.7-2
    PHP and hence web-based tool to administrate MySQL over the WWW

といった具合で、不整合を起こしているのではないかと思い至りました。そこで、

$ sudo pacman -R php-apache php-imap php-intl php-mcrypt
コマンドにて、パッケージをアンインストールしたのち、
$ sudo pacman -S php71-apache php71-imap php71-intl php71-mcrypt
コマンドにて、パッケージをインストールしました。

その後、

$ sudo systemctl restart httpd.service
コマンドにて、Apacheを再起動させたところ、正常に動作することを確認しました。

# 個人的にはこれはパッケージ依存関係のバグなのではないかと思うのですが、識者のご意見を伺いたく思います。

編集者 nm (2018-01-18 07:35:41)

オフライン

Board footer