Top過去ログ目次掲示板

作成日:2006年12月09日 作成:おやじ
掲示板で過去に質問された内容です。

No.6569 phpからメール送信について


No.6569 投稿時間:2006年12月09日(Sat) 03:18 投稿者名:mitsu URL:
タイトル:phpからメール送信について

おやじ様いつもお世話になっています。

なんとかおやじ様にも助けられここまできたのですが
cgiからはメール送信ができますがphpからメールの送信ができません。
何か設定をしないといけないでしょうか?

サーバー:fedora5
メール:postfix バーチャル
web:apache2 バーチャル
メールのパスは
usr/sbin/sendmailです。

php-5.1.6の画面も表示されます。

簡素な説明で申し訳ございません。
まだまだ勉強が足りませんがおやじ様のお力をお貸しくださいませ・・


No.6571 投稿時間:2006年12月09日(Sat) 13:32 投稿者名:おやじ URL:
タイトル:順番に切り分けていかないと判らないのでは?

> なんとかおやじ様にも助けられここまできたのですが
> cgiからはメール送信ができますがphpからメールの送信ができません。
> 何か設定をしないといけないでしょうか?
>
> サーバー:fedora5
> メール:postfix バーチャル
> web:apache2 バーチャル
> メールのパスは
> usr/sbin/sendmailです。
>
> php-5.1.6の画面も表示されます。

送れないというだけでは、何が起きているか何もわからないですよね。
サーバに関する問題は、全てログを見て状況把握することが基本です。(ネットワーク的な問題はパケットを見ると切り分けが簡単)
PHPそのものの問題なのか? Apache(PHP)側の問題なのか? postfix(実際はsendmail互換コマンド)の問題なのか? 切り分けていかないと判らないのでは?
下記は、単純な送信プログラムです。適当な名前(mail.php等)で作成して、HPに送り込んでwebでアクセスしてみてください。
もちろん、「oyaji@mail.aconus.com」のところは、自分のアカウントにしてください。
うまくいくなら、テストしているPHPが悪いですし、そうでなければApacheのログやPostfixのログを見て順番に追い込むしかないですね。

-----ここから--------------------------------------
<html>
<body>
<?php
mb_internal_encoding("SJIS");
$result = mb_send_mail( "oyaji@mail.aconus.com", "件名:テスト" , "本文:テストメールです。" );
if(!$result){echo "送信に失敗しました。
";}
else{echo "送信に成功しました。
";}
?>
<body>
</html>
-----ここまで--------------------------------------


No.6572 投稿時間:2006年12月09日(Sat) 15:27 投稿者名:mitsu URL:
タイトル:Re: 順番に切り分けていかないと判らないのでは?

早速ありがとうございます。

テストのmail.phpを転送したところ何も表示されませんでした。

次にApacheログは下記のようにでました。
何かApacheとphpの連携が取れていないのでしょうか・・

# tail /var/log/httpd/error_log
[Sun Dec 03 04:19:37 2006] [notice] Digest: generating secret for digest authentication ...
[Sun Dec 03 04:19:37 2006] [notice] Digest: done
[Sun Dec 03 04:19:37 2006] [notice] Apache/2.2.2 (Fedora) DAV/2 PHP/5.1.6 configured -- resuming normal operations
[Mon Dec 04 04:19:43 2006] [notice] SIGHUP received. Attempting to restart
[Mon Dec 04 04:19:44 2006] [notice] Digest: generating secret for digest authentication ...
[Mon Dec 04 04:19:44 2006] [notice] Digest: done
[Mon Dec 04 04:19:45 2006] [notice] Apache/2.2.2 (Fedora) DAV/2 PHP/5.1.6 configured -- resuming normal operations

後、postfixのログですが本日付のエラーメールしか見れないのですが2,3日前のログはどうすればみれますでしょうか?
ログのコマンドはこれで見ました。
# tail /var/log/maillog

以上、よろしくお願い致します。


No.6573 投稿時間:2006年12月09日(Sat) 20:49 投稿者名:おやじ URL:
タイトル:Apacheのaccess_logは何故見ないのですか?

> テストのmail.phpを転送したところ何も表示されませんでした。

真っ白画面のソースを見てみましたか? 本当に何もない場合と、htmlのbody内が何もない場合では状況が違います。

> 次にApacheログは下記のようにでました。
> 何かApacheとphpの連携が取れていないのでしょうか・・
>
> # tail /var/log/httpd/error_log
> [Sun Dec 03 04:19:37 2006] [notice] Digest: generating secret for digest authentication ...
> [Sun Dec 03 04:19:37 2006] [notice] Digest: done
> [Sun Dec 03 04:19:37 2006] [notice] Apache/2.2.2 (Fedora) DAV/2 PHP/5.1.6 configured -- resuming normal operations
> [Mon Dec 04 04:19:43 2006] [notice] SIGHUP received. Attempting to restart
> [Mon Dec 04 04:19:44 2006] [notice] Digest: generating secret for digest authentication ...
> [Mon Dec 04 04:19:44 2006] [notice] Digest: done
> [Mon Dec 04 04:19:45 2006] [notice] Apache/2.2.2 (Fedora) DAV/2 PHP/5.1.6 configured -- resuming normal operations

これは、特段エラーがなくApacheが起動したときのログです。しかも12月4日のログでそれ以来エラーが出ていないというのも少し疑問なのですが、未公開のサーバですか? おやじのところは山ほどエラーがでるのですが・・。
この状態で、本当にテスト用PHPにアクセスしたなら、Apacheのaccess_logを見ると正常終了(200)しているのではないでしょうか?

> 後、postfixのログですが本日付のエラーメールしか見れないのですが2,3日前のログはどうすればみれますでしょうか?
> ログのコマンドはこれで見ました。
> # tail /var/log/maillog

ここには何もでていないのですか? ApacheにもPostfixにもエラーがない? なのに表示がでない? となると、postfixが怪しそうですがApache/Postfixは起動してますよね。
なお、ls -al /var/logでみれば判るはずですが、logrotateされるので、maillog.1 - maillog.2と末尾が数字が大きいほど古いログです。更新日付を見ればいつごろのものか判るはずです。
因みに、これくらいはwebで調べましょうね。


No.6577 投稿時間:2006年12月10日(Sun) 19:05 投稿者名:mitsu URL:
タイトル:Re: Apacheのaccess_logは何故見ないのですか?

おやじ様いつもご迷惑をおかけしています。

> 真っ白画面のソースを見てみましたか? 本当に何もない場合と、htmlのbody内が何もない場合では状況が違います。

申し訳ございません。ソースを見るのを忘れてました。
ソース内容は
<html>
<body>
だけでした。

サーバーはバーチャルでログも分けてたのもうっかりしてました。

> この状態で、本当にテスト用PHPにアクセスしたなら、Apacheのaccess_logを見ると正常終了(200)しているのではないでしょうか?

mail.phpアクセスログ
220.11.224.18 - - [10/Dec/2006:00:53:38 +0900] "GET /mail.php HTTP/1.1" 200 14 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)"

mail.phpエラーログ
[Sun Dec 10 00:53:38 2006] [error] [client 220.※.※.※] PHP Fatal error: Call to undefined function mb_internal_encoding() in /home/user/public_html/mail.php on line 4

大量エラーログ
[Sun Dec 10 01:13:29 2006] [error] [client 220.※.※.※] PHP Notice: Undefined variable: ERROR_PAGE_DESIGN in ページ

[Wed Dec 06 15:24:39 2006] [error] [client 220.※.※.※] PHP Notice: Undefined offset: 0 in /home/user/public_html/af/include/GUIManager.php on line 484, referer: http://mydomain.com/af/search.php?type=pay&run=true&y=2006&m=12

上記に加えline436 488 490 491もエラーが出てました。

postfixのログ(mail.php)はなかったです。

以上、よろしくお願い致します。


No.6581 投稿時間:2006年12月11日(Mon) 20:55 投稿者名:おやじ URL:
タイトル:少なくともテストPHPが動かない原因は明確だと思いますが・・・

下記の結果を見れば、少なくともおやじが提示したテスト用PHPのほうは答えがでているのではないでしょうか?
これを見て、対処できないようだともう少し基本的なことを勉強しないときついですね。

> > この状態で、本当にテスト用PHPにアクセスしたなら、Apacheのaccess_logを見ると正常終了(200)しているのではないでしょうか?
>
> mail.phpアクセスログ
> 220.11.224.18 - - [10/Dec/2006:00:53:38 +0900] "GET /mail.php HTTP/1.1" 200 14 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)"
>
> mail.phpエラーログ
> [Sun Dec 10 00:53:38 2006] [error] [client 220.※.※.※] PHP Fatal error: Call to undefined function mb_internal_encoding() in /home/user/public_html/mail.php on line 4

このログで十分答えはでていると思うのですが、対策がわかりませんか? テスト用PHPの4行目は”mb_internal_encoding("SJIS");”と内部コードをSJISと宣言しているだけで、かつ、エラーは
「PHPの致命的なエラー:/home/user/public_html/mail.phpの4行目で"mb_internal_encoding()"という未定義の機能を呼び出している。」
といっているのですから、PHPの日本語環境用のmbstringがインストールされていない以外の原因は考えられません。デストリがわかりませんが、php-mbstringを入れてください。
英語が苦手なら、翻訳サイトに貼り付ければ大体わかると思います。検索も同じで、エラーメッセージを検索すると結構対策が見つかります。多くは英語ですが・・・。

> 大量エラーログ
> [Sun Dec 10 01:13:29 2006] [error] [client 220.※.※.※] PHP Notice: Undefined variable: ERROR_PAGE_DESIGN in ページ
>
> [Wed Dec 06 15:24:39 2006] [error] [client 220.※.※.※] PHP Notice: Undefined offset: 0 in /home/user/public_html/af/include/GUIManager.php on line 484, referer: http://mydomain.com/af/search.php?type=pay&run=true&y=2006&m=12
>
> 上記に加えline436 488 490 491もエラーが出てました。

といわれても、何を動かしているかわからないので、上記と同じように出ているエラーをつぶしていくしかないですね。phpモジュールが足りないことが原因と思いますが。

> postfixのログ(mail.php)はなかったです。

postfixのsendmailコマンドに行く前段階のphpが実行できていないので、当然、postfixにログ(localhostからの接続)はあるはずはないですよね。


No.6583 投稿時間:2006年12月11日(Mon) 21:30 投稿者名:mitsu URL:
タイトル:Re: 少なくともテストPHPが動かない原因は明確だと思いますが・・・

おやじ様本当に感謝しています。

エラー内容で色々検索してた所おそらく
php-mbstringだと思っていたのですが下手に触るよりおやじ様の最終確定がほしかったのです。
mail.phpも送信に成功しました。とでました。
本当に申し訳ございませんでした。
もっともっと基本からやり直します・・・



掲示板▲頁先頭