LoginSignup
tamagoage
@tamagoage

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

phpmyadminが起動できず、mysqli拡張が見つからないというエラーが出る

実現したいこと

正常にmysqli拡張機能を読み込めるようにし、phpmyadminのエラーを解決したい。

前提

  • PHPのパスをMAMP内のPHPに通しています
  • 以前別のエラーが発生したため、MAMPの上書きinstallをしています。
    (MAMPのバージョンをphp8.0.1からphp8.1.0に変えた際に発生。パスをMAMP内のphp8.0.1に通していたことで競合し、拡張機能が読み込めていなった。 必要であればこちらの情報も追記いたします)

追記:この問題に関して
①PHPのパスをMAMP内のPHP8.0.1に通していた
②MAMPのPHPのバージョンを8.1.0に変更したところ、open webstart pageなどのphpを使うページでchromeのERR_CONNECTION_RESETエラーが発生し閲覧できない(この際phpmyadminは使用可能)
③エラーログを見たところ、php.iniの指定は正しかったのにもかかわらず拡張機能が全て読み込めていなかった("PHP Startup: Unable to load dynamic library *.dll"というエラーが続いていた)
④stackoverflow(https://stackoverflow.com/questions/74994020/mamp-5-0-5-on-windows-php-8-1-0-doesnt-work
)を読んで①が原因かもしれないと思い、パスを削除したところ、拡張機能が読み込めるようになった。
⑤その後、PHP8.1.0にパスを通した

  • 流れとしては、上記の問題が解決し、いざコーディングをしようとしたところphpmyadminが開けなくなりました。
$ php --ini
Configuration File (php.ini) Path:
Loaded Configuration File:         C:\MAMP\bin\php\php8.1.0\php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed:      (none)
  • おそらくMySQLサーバーは正常に動いているかと思います
 & 'C:\MAMP\bin\mysql\bin\mysql.exe' -u root -p -P 8889
Enter password: ****
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.24 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

発生している問題・エラーメッセージ

MAMPを起動後、open webstart pageを押し、phpmyadminを開くと以下のようになり、mydqli拡張が正常に読み込まれていないようです

The mysqli extension is missing. Please check your PHP configuration. See our documentation for more information.

各種エラーログ

エラーログを見た感じだと、php_eroor.logに一番問題がありそうでした
ですが、mysql自体はパワーシェルからログインできたということと、phpmyadminの設定もうまくできているので解決にはつながりませんでした。

php_eroor.log
[26-Nov-2023 12:26:47 UTC] PHP Warning:  mysqli_connect(): (HY000/1045): Access denied for user 'root'@'localhost' (using password: NO) in C:\Users\root\AppData\Roaming\Appsolute\MAMP\pscripts\file-59fff517-0a8e-4802-a2da-462b2a37d34f.php on line 3
[26-Nov-2023 12:26:47 UTC] PHP Warning:  mysqli_query() expects parameter 1 to be mysqli, boolean given in C:\Users\root\AppData\Roaming\Appsolute\MAMP\pscripts\file-59fff517-0a8e-4802-a2da-462b2a37d34f.php on line 12
[26-Nov-2023 12:26:47 UTC] PHP Warning:  mysqli_query() expects parameter 1 to be mysqli, boolean given in C:\Users\root\AppData\Roaming\Appsolute\MAMP\pscripts\file-59fff517-0a8e-4802-a2da-462b2a37d34f.php on line 13
[26-Nov-2023 12:26:47 UTC] PHP Warning:  mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, null given in C:\Users\root\AppData\Roaming\Appsolute\MAMP\pscripts\file-59fff517-0a8e-4802-a2da-462b2a37d34f.php on line 16
[26-Nov-2023 12:26:47 UTC] PHP Warning:  mysqli_close() expects parameter 1 to be mysqli, boolean given in C:\Users\root\AppData\Roaming\Appsolute\MAMP\pscripts\file-59fff517-0a8e-4802-a2da-462b2a37d34f.php on line 21
apache_error.log 修正版
[Mon Nov 27 10:19:53.048101 2023] [core:warn] [pid 25184:tid 204] AH00098: pid file C:/MAMP/bin/apache/logs/httpd.pid overwritten -- Unclean shutdown of previous Apache run?
[Mon Nov 27 10:19:53.236355 2023] [ssl:warn] [pid 25184:tid 204] AH01873: Init: Session Cache is not configured [hint: SSLSessionCache]
[Mon Nov 27 10:19:53.238355 2023] [lbmethod_heartbeat:notice] [pid 25184:tid 204] AH02282: No slotmem from mod_heartmonitor
[Mon Nov 27 10:19:53.250942 2023] [mpm_winnt:notice] [pid 25184:tid 204] AH00455: Apache/2.4.33 (Win64) OpenSSL/1.0.2u mod_fcgid/2.3.9 PHP/8.1.0 configured -- resuming normal operations
[Mon Nov 27 10:19:53.250942 2023] [mpm_winnt:notice] [pid 25184:tid 204] AH00456: Server built: Jul  6 2021 12:22:16
[Mon Nov 27 10:19:53.250942 2023] [core:notice] [pid 25184:tid 204] AH00094: Command line: 'C:\\MAMP\\\\bin\\apache\\bin\\httpd.exe -d C:/MAMP/bin/apache -f C:\\MAMP\\\\conf\\apache\\httpd.conf'
[Mon Nov 27 10:19:53.256970 2023] [mpm_winnt:notice] [pid 25184:tid 204] AH00418: Parent: Created child process 24212
[Mon Nov 27 10:19:54.377165 2023] [ssl:warn] [pid 24212:tid 416] AH01873: Init: Session Cache is not configured [hint: SSLSessionCache]
[Mon Nov 27 10:19:54.379183 2023] [lbmethod_heartbeat:notice] [pid 24212:tid 416] AH02282: No slotmem from mod_heartmonitor
[Mon Nov 27 10:19:54.395609 2023] [mpm_winnt:notice] [pid 24212:tid 416] AH00354: Child: Starting 64 worker threads.
mysql_error_log.err
2023-11-26T12:40:35.465687Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2023-11-26T12:40:35.465842Z 0 [Note] --secure-file-priv is set to NULL. Operations related to importing and exporting data are disabled
2023-11-26T12:40:35.466331Z 0 [ERROR] Cannot open Windows EventLog; check privileges, or start server with --log_syslog=0
2023-11-26T12:40:35.466364Z 0 [Note] C:\MAMP\\bin\mysql\bin\mysqld.exe (mysqld 5.7.24) starting as process 2848 ...
2023-11-26T12:40:35.476896Z 0 [Warning] You need to use --log-bin to make --binlog-format work.
2023-11-26T12:40:35.479470Z 0 [Note] InnoDB: Mutexes and rw_locks use Windows interlocked functions
2023-11-26T12:40:35.480520Z 0 [Note] InnoDB: Uses event mutexes
2023-11-26T12:40:35.481171Z 0 [Note] InnoDB: _mm_lfence() and _mm_sfence() are used for memory barrier
2023-11-26T12:40:35.482026Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
2023-11-26T12:40:35.483084Z 0 [Note] InnoDB: Number of pools: 1
2023-11-26T12:40:35.483616Z 0 [Note] InnoDB: Not using CPU crc32 instructions
2023-11-26T12:40:35.487835Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
2023-11-26T12:40:35.495999Z 0 [Note] InnoDB: Completed initialization of buffer pool
2023-11-26T12:40:35.523267Z 0 [Note] InnoDB: Highest supported file format is Barracuda.
2023-11-26T12:40:35.641208Z 0 [Note] InnoDB: Creating shared tablespace for temporary tables
2023-11-26T12:40:35.642175Z 0 [Note] InnoDB: Setting file '.\ibtmp1' size to 12 MB. Physically writing the file full; Please wait ...
2023-11-26T12:40:35.656654Z 0 [Note] InnoDB: File '.\ibtmp1' size is now 12 MB.
2023-11-26T12:40:35.668135Z 0 [Note] InnoDB: 96 redo rollback segment(s) found. 96 redo rollback segment(s) are active.
2023-11-26T12:40:35.669296Z 0 [Note] InnoDB: 32 non-redo rollback segment(s) are active.
2023-11-26T12:40:35.670492Z 0 [Note] InnoDB: Waiting for purge to start
2023-11-26T12:40:35.730486Z 0 [Note] InnoDB: 5.7.24 started; log sequence number 4331776
2023-11-26T12:40:35.731912Z 0 [Note] InnoDB: Loading buffer pool(s) from C:\MAMP\db\mysql\ib_buffer_pool
2023-11-26T12:40:35.731955Z 0 [Note] Plugin 'FEDERATED' is disabled.
2023-11-26T12:40:35.741523Z 0 [Warning] Failed to set up SSL because of the following SSL library error: SSL context is not usable without certificate and private key
2023-11-26T12:40:35.742601Z 0 [Note] Server hostname (bind-address): '*'; port: 8889
2023-11-26T12:40:35.743441Z 0 [Note] IPv6 is available.
2023-11-26T12:40:35.743802Z 0 [Note]   - '::' resolves to '::';
2023-11-26T12:40:35.744291Z 0 [Note] Server socket created on IP: '::'.
2023-11-26T12:40:35.766609Z 0 [Note] InnoDB: Buffer pool(s) load completed at 231126 21:40:35
2023-11-26T12:40:35.778028Z 0 [Note] Failed to start slave threads for channel ''
2023-11-26T12:40:35.803582Z 0 [Note] Event Scheduler: Loaded 0 events
2023-11-26T12:40:35.804163Z 0 [Note] C:\MAMP\\bin\mysql\bin\mysqld.exe: ready for connections.
Version: '5.7.24'  socket: ''  port: 8889  MySQL Community Server (GPL)
2023-11-26T12:40:35.808851Z 2 [Note] Got an error reading communication packets

試したこと

  • 前述しましたが、拡張機能が見つからないということなので、php.ini, phpmyadmin/config.inc.phpの設定を見たところ、特に問題はなさそうでした
php.ini
;extension=bz2
extension=curl
;extension=ffi
;extension=ftp
extension=fileinfo
;extension=gd
;extension=gettext
;extension=gmp
;extension=intl
;extension=imap
;extension=ldap
extension=mbstring
;extension=exif      ; Must be after mbstring as it depends on it
extension=mysqli
;extension=oci8_12c  ; Use with Oracle Database 12c Instant Client
;extension=oci8_19  ; Use with Oracle Database 19 Instant Client
;extension=odbc
extension=openssl
;extension=pdo_firebird
extension=pdo_mysql
MAMP/bin/phpmyadmin/config.inc.php
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'config';
/* Server parameters */
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
/* Select mysql if your server does not have mysqli */
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['AllowNoPassword'] = false;
$cfg['Servers'][$i]['port'] = '8889'; // MySQL port 
$cfg['Servers'][$i]['user'] = 'root'; // MySQL user
$cfg['Servers'][$i]['password'] = 'root'; // MySQL password
  • PHPのパスを削除しphpmyadminを開く→変化なし
  • MAMPのPHPのバージョンをPHP8.0.1に戻す→変化なし
  • copilotにエラーログを投げたりコマンドの実行結果を投げたりしながらエラーの解決をしようとしました。

スクリーンショット (466).png

補足情報(FW/ツールのバージョンなど)

MAMP5.0.5, PHP8.1.0, MySQL5.7.24

0

1Answer

MAMPを使ったことが無いので推測になります。

Windows版PHPでmysqliを有効にするには

php.ini
extension=mysqli

とするのが正解(接頭辞や拡張子を付けない)です。ところがエラーログは

PHP Warning: PHP Startup: Unable to load dynamic library 'php_mysqli.php' (tried: ext\php_mysqli.php (指定されたモジュールが見つかりません。), ext\php_php_mysqli.php.dll (指定されたモジュールが見つかりません。)) in Unknown on line 0

php_mysqli.phpが無いことを示してます。つまりどこかしらの.iniファイルで

???.ini
extension=php_mysqli.php

といった指定がなされてるのかと思われますが記憶にありますか?
また提示されているphp.iniは相当するphp(PHP 8.1.0)が読み込んでいるものだと確証されてますか?
phpinfo()関数による環境確認していますか?


競合云々でトラブったとのことですが、(上記含めて)この辺りの詳しい情報が無い為これ以上申し上げることはありません。
ディレクトリを見る限りPHPの版はフォルダ毎に分かれてるようですが何かをしない限り競合が起こるとは考えにくいです(或いはPath環境変数を弄ってしまっているか)。
環境変数を元に戻してクリーンインストールしたほうがはやいかもしれません。

1

Comments

  1. @tamagoage

    Questioner

    返信ありがとうございます
    ①extension=php_mysqli.phpに関してですが、片っ端から解決策を試していた際に上記の拡張機能を追加したものです。エラーメッセージの選択範囲を間違えてしまっただけなので無視して問題ないです
    ②前提の部分でphp --iniをした結果を添付しているのですが、あれだけだと不十分でしょうか?
    ただ、同一のファイルをいじって状態が変わっていったのでこのファイルがPHP8.1.0で間違いないかと思います
    ③phpinfo()とはちょっと違うのですが、写真を添付いたしました
    ④おっしゃる通り、Path環境変数はいじっていました...

    バックアップだけ取ってMAMPのフォルダ事消した方がいいですかね...

  2. 自身でアップロードしたスクリーンショットをよく確認して欲しいのですが、odbcが活性化してるようにみえます。
    しかし提示されたphp.iniはodbcをコメントアウトしているため無効化されるはずです。このphp.iniはどこの.iniファイルなのか不明なのです。

    なので私は

    また提示されているphp.iniは相当するphp(PHP 8.1.0)が読み込んでいるものだと確証されてますか?

    問いました。

    phpinfo()関数が実行できているなら、Loaded Configuration FileConfiguration File (php.ini) Path 或いは Scan this dir for additional .ini files と言った項目からどのiniファイルを読んでいるのかが分かるはずです。

    該当するiniファイル内容を調査することで解決できるのではないでしょうか。

  3. @tamagoage

    Questioner

    ありがとうございます!!!!!!
    試行錯誤をしているうちに頭の中でがごちゃごちゃになっていました!
    PHPのパスを通しているところがMAMPのPHP8.1.0のphp.iniを読み込んでいる場所だと勝手に勘違いしておりました!(送信ボタン押し忘れてました。いろいろとありがとうございました!)

Your answer might help someone💌