はじめまして。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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
- ガラケー・PHS SMSメールの受信遅延原因はガラケー自体の欠陥では 8 2022/08/06 11:46
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- CPU・メモリ・マザーボード 「コンピューターのメモリが不足しています」 3 2022/12/15 22:07
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- CPU・メモリ・マザーボード 「コンピューターのメモリが不足しています」 5 2022/12/15 10:10
- Android(アンドロイド) Googleフォト 1 2022/03/25 07:38
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- デスクトップパソコン 自作PCの電源が入らなくなりました、なんでもいいので助言ください。 5 2022/12/21 21:08
- その他(コンピューター・テクノロジー) ファイル名以外でも先頭を数字にしない方がよいのか 3 2022/08/06 02:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UTF8メールがLotus Notesで文字...
-
メールのCCに複数のアドレスを...
-
PHP mb_convert_encoding sjis...
-
文字化け変換方法
-
廣のjis変換で文字化け
-
sjisで書いているPHPとeucのM...
-
よく、書式で出てくる ○○ ( ○○,...
-
10文字以降は非表示にしたいん...
-
送信したメールのタイトルが無...
-
PHP・MySQLでデータベースを作...
-
VBAのコマンドボタンの文字列の...
-
ソースコードの1行が長いとき...
-
テキストファイルから改行コー...
-
エスケープ文字の復帰(¥r)と...
-
文字の入力で横バー上段、中断...
-
グレープシティのSPREAD...
-
エクセルのCOUNTIFが正しくカウ...
-
jsp 改行コードで改行させて表...
-
ExcelVBAでメールを作成してメ...
-
C++で空Enterの入力を判...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文字化け変換方法
-
phpのメールフォームの完了画面...
-
SQL Serverで文字コードUTF-8
-
PHPmailerでの添付ファイルの文...
-
SJISで取得した半角カナをUTF-8...
-
mb_convert_encoding で 一部の...
-
SJIS→UTF-8変換後の文字化けに...
-
PHP cURLでPOSTした値が文字化...
-
phpMyAdmin内での文字化け
-
mb_ereg_replaceに関して
-
RSSを取得すると文字化けする。
-
PostgreSQLからCSV形式でエクス...
-
【PHP】mb_convert_encoding...
-
mb_regex_encodingでエンコード...
-
postの文字化け防止について
-
小さいひらがな(っ、ょ、ぃ、ゃ...
-
UTF8メールがLotus Notesで文字...
-
mail()で送信したメールのタイ...
-
php自動返信メール本文の一部の...
-
phpでの文字エンコード
おすすめ情報