qmailをPHPで使えるようにする方法

先日、サーバーの設定をしていたらある問題が起きました。それは、qmailを使用していてPHPのmail関数、mb_send_mail関数が実行されていませんでした。これは問題あると言うことで調べてみました。

問題点

この問題は、PHPのエラーは起きなくて普通に送信しましたページまで行きます。けれどもメールの受信をしません。

メールの受信をしない

エラーもなく、メールが受信しないので、フォームはまず使えませんでした。フォームが使えないので、サイト内での問い合わせとか、注文メール、WPなどをインストールしたときのメールなど一切届きません。

こんな問題があります。地味に厄介です。php.iniのdisplyerror=On にしても、エラーはでなく、maillogにエラーログもないです。というわけでこの問題に立ち向かったときに僕がしたことを残しておきます。

拡張モジュール、mbstringのインストール

yumからPHPをインストールするとき、拡張モジュールを一緒にインストールしないと使えない事があります。おそらく一緒にインストールしていると思いますがもししていなかった場合はインストールしてください。

/etc/init.d/httpd restart

インストール後はApache(アパッチ)の再起動をします。

拡張モジュールをインストールしても解決しない

拡張モジュールをインストールしても、問題は解決しません。どうやらインストールしただけでは、mbstringが有効化されていないらしく、有効化しないといけないみたいです。

01# vi /etc/php.ini
02 
03※ バージョン情報の隠匿
04;expose_php = On
05↓変更する
06expose_php = Off
07 
08※ 文字コードの設定
09;mbstring.language = Japanese
10↓変更する
11mbstring.language = Japanes
12 
13;mbstring.internal_encoding = EUC-JP
14↓内部エンコード固定の場合は、変更する
15mbstring.internal_encoding = UTF-8
16 
17;mbstring.http_input = auto
18↓変更する
19mbstring.http_input = auto
20 
21;mbstring.detect_order = auto
22↓変更する
23mbstring.detect_order = auto
24 
25:wq ←保存して閉じる

Apache(アパッチ)の再起動します
# /etc/rc.d/init.d/httpd restart

php.iniの設定をしても、メールは送れませんでした。これが原因ではないみたいです。

sendmail_pathを変更することで使えるようになる

PHPのデフォルトの設定では、sendmailを使うようになっています。そのため、php.iniを変更することでqmailからもできるようになります。

sendmail_path = /var/qmail/bin/qmail-inject

これでアパッチを念のため再起動をします。僕が設定したサーバーではこの方法で使えるようになりました。

個人支援・寄付について

サイトラボでは個人支援・寄付を受けております。ご協力いただける方はお願いいたします。当サイトではビットコインで受け付けております。

  • ビットコイン:3LHnADwZwUbic2L45EnVJEykiG6KfbqrwS