ページ: 1
表題の通りなのですが、いつごろからか 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 が表示されている。
オフライン
https://wiki.archlinux.jp/index.php/Apa … Server#PHP
PHPの設定が以前と変っているので、そのあたりも修正はされました?
> # Loaded Modules に列挙されていない。
これはapacheのModulesの表示なので、関係ないように思います。
オフライン
ご返信いただきありがとうございます。
- 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() ではロードしているモジュールを確認する方法はないのでしょうか?
オフライン
なんとか自力での解決に至ったので報告させていただきます。
原因: 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)
オフライン
ページ: 1