PHPで既にモジュールを読み込んでるとエラーになる

php-warning-module
  • URLをコピーしました!

最近、久しぶりにPHPでプログラミングをする機会が増えた。
少し凝ったことをしようと思うと様々な拡張モジュールを使うことがありますが、そのモジュールをインストールしてなかったり、読み込む設定し忘れたりすると、エラーが出て思ったように動きません。
しかし、今回のエラーは逆でした。

目次

PHP Warning:のエラー内容

PHPを実行したところ、以下のように警告のエラーが出力されました。
※’curl’の部分は読み込んでいるモジュールによって異なります

パッと見るとPHPモジュールが不足しているのかと思って確認すると、正しくインストールも読み込む設定もされていました。
しかし、よく見ると「既に読み込まれている」的な内容でした。
念のため日本語に翻訳。

PHP Warning: モジュール ‘curl’ は 0 行目の Unknown で既にロードされています。

うん、よくわからんが何かそんな感じ。
既に読み込んだPHPモジュールをさらに読み込もうとしていると解釈。

【原因】PHPモジュールを複数読み込んでいる

まずは、どこで拡張モジュール複数読み込んでいるのか探してみます。
設定ファイルの格納場所をすぐに忘れるので一覧で表示します。

PHP拡張モジュールを確認する

以下のように書いたPHPファイルを用意して確認してもいいですが、

わざわざファイルを作成してブラウザで表示するのは面倒なので、LinuxUbuntu)からPHPコマンドで設定ファイル(~.ini)の一覧を表示してみます。

あれま。例のエラーと共に設定ファイルの一覧が表示されました。
どうやら、/etc/php/7.4/cli/php.iniに標準の設定、/etc/php/7.4/cli/conf.dの配下に追加の設定がある様子。
エラーが出ているモジュール名の設定ファイルがあるのですぐに見つかりますね!

/etc/php/7.4/cli/conf.d配下にある設定ファイルは、リンクを張っているだけですので、実際には、/etc/php/7.4/mods-available/の配下に格納されています

【対策】拡張モジュールの確認と変更

それでは、設定ファイルの内容を確認して、本当にモジュールを複数読み込むように設定しているか確認して、変更していきましょう。
今回のエラーの内容から、確認するのは以下2つのファイルだけで良さそうです。

  1. /etc/php/7.4/cli/php.ini
  2. /etc/php/7.4/cli/conf.d/20-curl.ini

拡張モジュールの有効・無効を確認

個のファイルの「extension=~」がある行を探し出します。
ここでは「extension=curl(.so)」が書いてある行を探します。

php.ini

extensionがズラ~っと書いてかる行が並んでいると思います。

20-curl.ini

20-curl.iniではすぐに見つかりましたね!

変更してエラーを解消!

行の先頭の「;セミコロン)」はコメントアウトを表します。
見てわかる通り、どちらのファイルでも同じモジュールを有効にしていましたので、どちらか一方をコメントアウトしたら解決です!

通常は拡張設定ファイル(20-curl.ini)の方で行うのですが、何故かphp.ini側でも有効化されていました。。

管理者

たぶん、昔変更したのを忘れていただけだと思います。

てなわけで、extension=curl;extension=curlに変更するだけで万事解決です!
後はサービスを再起動してあげましょう。
お疲れ様でした!

著:大重 美幸
¥3,344 (2023/01/31 13:24時点 | Amazon調べ)
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

東京生まれ福岡育ちの文系プログラマー。
テクノロジーの恩恵を感じながら日々精進しています。
広く浅くをモットーに、最近ではプログラミングだけでなく、仮想サーバーからセキュリティ、監視システムなども勉強中です。

コメント

コメントする

CAPTCHA


目次