目標10,000記事!

目標10,000記事!

logwはInternet Explorerには対応しておりません。

logwはInternet Explorerには対応しておりません。

このスライドは、ブログとは何の関連もありません。

このスライドは、ブログとは何の関連もありません。

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

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

問題点

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

メールの受信をしない

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

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

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

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

yum install -y php-mbstring

/etc/init.d/httpd restart

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

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

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

# vi /etc/php.ini

※ バージョン情報の隠匿
;expose_php = On
↓変更する
expose_php = Off

※ 文字コードの設定
;mbstring.language = Japanese
↓変更する
mbstring.language = Japanes

;mbstring.internal_encoding = EUC-JP
↓内部エンコード固定の場合は、変更する
mbstring.internal_encoding = UTF-8

;mbstring.http_input = auto
↓変更する
mbstring.http_input = auto

;mbstring.detect_order = auto
↓変更する
mbstring.detect_order = auto

: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

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

サイトラボではお仕事募集しています。WEBサイトの制作、サーバーの構築などしています。是非お問い合わせください。

管釣り.com-KANTSURI-公開中。ゆっくり作っていきます。

この記事が役に立ったと思って頂けましたらシェア御願い致します。

  • このエントリーをはてなブックマークに追加