はじめまして。SOGURINと申します。
こちらでの質問は初めてですので何卒宜しくお願いします。
いろいろ調べましたが、解決策が見つからなかったので、ご質問させてください。
【現象】
空メール受信でPHP起動し、送信者に対して自動返信メールを送るプログラムを組んでいます。
/etc/aliasesに起動するphpのファイル名を設定してプログラムを起動する所までは順調です。
返信内容の別ファイル(SJISで保存)からタイトルと本文を読み込んで、
送信前にタイトルをJIS変換させる記述を入れると、プログラムがこの記述で止まってしまいます(おそらく)。
$title = mb_convert_encoding($title,"JIS","SJIS");
※(おそらく)と言うのは。。
エラーログを出そうとしてもエラーログ出力されないので、多分そうだろうと言う事です。
if(!$title = mb_convert_encoding($title,"JIS","SJIS")){
$output = "関数エラー";
log_up($output,$LOGFILE);
exit;
}
確実に言えるのは、上記で、
$titleのmb_convert_encodingの記述を外してそのまま送ると、文字化けしたメールが届く。
mb_convert_encodingの記述を入れると、メールは届かない
と言う事です。
これまでに似たような話題はありましたが、
・mb_stringを入れてコンパイルしないといけない点に関しては、phpinfo()で、
「'--enable-mbstring'」とありましたのでインストールされているのか。と。。
・他のプログラムで画面上で操作して、mb_convert_encodingでJIS変換⇒メール送信
という機能は使ってますが普通に動いてます。
ということで、サーバーとしてmb_convert_encodingが動かない環境と言うわけでは無いと思うのですが、通常起動の時はmb_convert_encodingが正常に動作して、
自動起動の時だけmb_convert_encodingでプログラムが止まってしまう事に関して、他に原因として考えられることがありますでしょうか?
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
読み込まれている php.ini(Configuration File Path) は意図したものになってますか?
mbstring.dllの警告ということは、意図しない設定ファイルが読み込まれているのではと。
設定ファイル
http://search.net-newbie.com/php/configuration.h …
コマンドラインオプション
http://d.hatena.ne.jp/maru_cc/20080214/1203007176
この回答への補足
レス有難うございます。
どうも、モジュール版のPHPと、CLI版PHPの実行ファイルがあり、コマンドラインからの実行はCLI版が動作するようです。
調べてみると、モジュール版の方にはconfigure時に、mbstringがインストールされているが、CLI版にはされてないみたいです。
php.iniから呼ばれているmbstring.dll自体がサーバー内に存在しません。。ちなみにlinuxなので、ネット等で調べるとmbstring.soがあるはずなんですが、それもサーバー内に無いみたいです。
それが原因のようです。
No.4
- 回答日時:
自動起動というか、コマンドラインから実行時の問題では?
php -f hoge.php で実行すると、phpinfo、mbstring関数は正常ですか?
phpのエラーログにはなにも出ないのでしょうか?
この回答への補足
ご回答有難うございます。
いろいろ調べていますが、仰るとおり、コマンドラインの実行時の
問題のようです。上記コマンドで実行した場合、
[28-Apr-2008 21:24:53] PHP Warning: Unable to load dynamic library '/usr/lib/ap
ache/php/php_mbstring.dll' - /usr/lib/apache/php/php_mbstring.dll: cannot open s
hared object file: No such file or directory in Unknown on line 0
と、PHPのエラーログが出ました。
モジュール版(WEBから実行)のPHPはmbstringが使えて、CLI版(コマンド実行)のPHPはダメとか言う問題のようです。
コマンドからそのモジュール版の方のPHPを実行する事って可能なのでしょうか?
No.3
- 回答日時:
error: safesasl(/etc/sasldb) failed: Group readable file
こいつが原因ですね^^;;;
http://www.google.co.jp/search?hl=ja&q=error%3A+ …
http://micho.mimora.com/sendmail.txt
ここの7.の項目が参考になるかと思います。
この回答への補足
ありがとうございます。
参考にして、「saslを使えるように」してみました。
そして、自動起動PGを動かしてみましたが。。
確かに、saslのエラーは/var/log/maillogには出てこなくなりましたが、残りの2つのエラーは出てくるみたいです。
自動返信のメールも来ません。
だから。。mb_stringが正常に動かなくなる原因とは違うのでしょうか。。
No.2
- 回答日時:
(snip.)
log_up($output,$LOGFILE);
exit; // <- ここに流れてきてるんじゃないですか?
}
$titleが空文字列であれば当然mb_convert_encoding()の結果も空文字列であり、結果的に論理否定と判断されifの中に入っている、と言う状態な気がします。
空メールに題名入れる人もいない気がしますし^^;
exit自体要らないような気が。
仕様でそういう風になっているのであればスルーしてくだされ^^;
この回答への補足
レスありがとうございます。
まあ。。exit;はいらないかもしれませんが。。
入れなくても、結果は同じです。
log_upと言う関数で$LOGFILEと言うファイルに"関数エラー"という文字列が書き込まれるはずなんですが、書き込まれずに終わっています。
※ちなみにこの関数自体は、ちゃんと動いてます。。
No.1
- 回答日時:
>エラーログを出そうとしてもエラーログ出力されないので、多分そうだろうと言う事です。
「/var/log/maillog」にエラーが記述されていませんか?
この回答への補足
テストしてみました。mb_convert_encodingを入れたときは、
「/var/log/maillog」に、次の3行が書き込まれました。
Apr 24 18:48:59 servername sendmail[27110]: error: safesasl(/etc/sasldb) failed: Group readable file
Apr 24 18:48:59 servername sendmail[27130]: m3O9mxh27130: from=<空メールした人のアドレス>, size=316, class=0, nrcpts=1, msgid=<20080424181031089377.614b@0016E68C232E>, proto=SMTP, daemon=MTA, relay=mmrky018p01c.softbank.ne.jp [000.000.204.84]
Apr 24 18:48:59 servername sendmail[27131]: m3O9mxh27130: to=|"/hoge/hoge/hoge/web/demo/automail/自動起動PG.php", ctladdr=<自動起動用メール宛先> (8/0), delay=00:00:00, xdelay=00:00:00, mailer=prog, pri=30028, dsn=2.0.0, stat=Sent
まあ、自動起動PG.phpで何らかのエラーが起こったということだと思いますが。。内容はよくわかりませんでした。
はっきりしたのは、「やっぱり自動起動でmb_convert_encodingを使うとエラーになる。」と言う事でしょうか。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
文字化け変換方法
-
phpMyAdmin内での文字化け
-
SJISで取得した半角カナをUTF-8...
-
SJIS→UTF-8変換後の文字化けに...
-
【PHP】半角「\\」を全角「...
-
PHPのsendmailでの文字化けにつ...
-
htmlはSJIS PHPはEUC mb_conv...
-
よく、書式で出てくる ○○ ( ○○,...
-
imodeメールのSubject部分の文...
-
UTF8メールがLotus Notesで文字...
-
VBAのコマンドボタンの文字列の...
-
エスケープ文字の復帰(¥r)と...
-
ソースコードの1行が長いとき...
-
メッセージボックスで1025文字...
-
eval 半角カナが文字化けする
-
textarea , PHP, 確認画面 改行
-
C++で空Enterの入力を判...
-
変数にHTMLを代入する場合
-
texのchapterが改行される
-
全角括弧と全角読点の間隔を狭...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文字化け変換方法
-
SQL Serverで文字コードUTF-8
-
PHPmailerでの添付ファイルの文...
-
SJISで取得した半角カナをUTF-8...
-
UTF8メールがLotus Notesで文字...
-
RSSを取得すると文字化けする。
-
「あ」→「82A0」のようにshift-...
-
【PHP】mb_convert_encoding...
-
メールのCCに複数のアドレスを...
-
postの文字化け防止について
-
PHP+Postgres 「髙」が文字化け
-
SJIS→UTF-8変換後の文字化けに...
-
記号だけの文字化け対応について
-
phpMyAdmin内での文字化け
-
送信したメールのタイトルが無...
-
phpのメールフォームの完了画面...
-
SJISからUTFに変換して...
-
sjisの文字化けとその対処方法...
-
メール題名の文字化け
-
セッションが文字化け、エンコ...
おすすめ情報