• 締切済み

internal server errが出る原因

こんにちは。 internal server errorが出る原因を知りたい さくらのレンタルサーバーを使用してサイトを運営しています。 開発環境で全くエラーが表示されず公開したのですが、あるユーザーさんより フォーム送信後にエラーが出ると指摘されました。(添付画像) テスト環境では何度やってもエラーがです、ユーザーさんに連絡したのですが、細かい事を聞くことが出来ず自分でどうやって対応したら良いか困って質問してみました。 状況は問い合わせフォームより必要事項を入力してもらい → 確認ボタン押下 → 送信ボタン押した時に添付画像が出るようです。 しつこいですが、テスト環境では普通に送信ありがとうございました。の画面に飛びます。 テスト環境について OS Windows vista Windows 7 ブラウザ Firefox 16 ie 8 chrome 26.0.1410.64 m safari 5.17 言語等 PHP 5.2.17 SQL 5.5.28 ソース エンコードの種類 UTF-8 なのでメタで <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> エラー出てるのが、メール送信部のようなのですが、テスト環境ではエラーが出ません。 確認ボタン押下 から 送信ボタン押して 次の画面までの処理の中で、文字のエンコードをしています。 phpのエラーが出てる部分と思われる場所。(確証はありせんが、確認ボタン押下した時、送信ボタン押下した時の処理の違いが、このあたりだけなので・・・) $body = "■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■\n"; $body.= "■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■\n"; $body.= $disp_name."\n"; $body.= "\n"; $body.= "今後ともよろしくお願いいたします。\n"; $body.= "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━".$conf["SITE_NAME_SUB"]."\n"; //再設定 mb_language("Japanese"); mb_internal_encoding("UTF-8"); $from = $conf["SITE_MAIL"]; $addheader = "From: ".$from."\n"; $addheader.= "Reply-To: ".$from."\n"; $subject = "【".$conf["SITE_NAME_SUB"]."】登録ありがとうございます。"; $subject = mb_convert_kana( $subject , "KV" ); $body = mb_convert_kana( $body , "KV" ); $to_mail = $inp_mail1; mb_send_mail( $to_mail , $subject , $body , $addheader ); で、internal server errorなのでphp.iniも関係あるかな?って思って下記に記載しました。 php.iniの設定 ----------------------------------------------------- register_globals = On language = "Japanese" mbstring.encoding_translation = Off mbstring.internal_encoding = “UTF-8″ mbstring.http_input = auto mbstring.http_output = “UTF-8″ include_path = .:/usr/lib/php:/usr/local/lib/php | ;include_path = "/home/username/www/install/PEAR" ----------------------------------------------------- 知りたい事 internal server errorが出る原因を知りたい ↓ 出ないようにしたい。 なにぶんテスト環境下でエラーが出ないので、構文と設定を見直す事しか出来ないので、良きアドバイスください。 また、エラーを教えてくれたユーザーさん以外は通常に利用していますので、(教えてくれない方もいると思うし)この問題を解決したいので、よろしくお願いします。

  • PHP
  • 回答数6
  • ありがとう数0

みんなの回答

  • hirotn
  • ベストアンサー率59% (147/246)
回答No.6

さくらのレンタルサーバーだと、エラーログは見られない可能性が高いですね。 サーバー単位の全ユーザーのエラーログ、となっているはずなので。 問題は示していただいた箇所とは違うソースです。 最後に画面にHTMLを出力する部分で失敗しているのだと思います。 ここで一番多いのが、Content-typeの出力忘れ、あるいは構文ミスですが、テスト環境ではうまく行っているとのことなので、考えづらい。 開発環境がWindowsで、さくらのレンタルサーバーはFreeBSD(EUC)その辺りも大丈夫でしょうか。 ブラウザへの出力部分、プログラムだけでも示せませんでしょうか?(文字列の内容は当然NGだとおもいますので***等黒塗りして)

回答No.5

>>メールは送信されていて、画面がinternal server errorが表示されている状態です であれば該当箇所とは別の部分のエラーだっぺ。 エラーログ見れるなら一番手っ取り早い、記録されている。

  • hirotn
  • ベストアンサー率59% (147/246)
回答No.4

php.iniにおいて、sendmail_path の設定を確認いただきたいと思います。 http://support.sakura.ad.jp/manual/rs/tech_cgi.html にあります通り、 /usr/sbin/sendmail となっておりますでしょうか。基本的なところでありますが、デフォルトのままですと気になるところです。関連質問を示します。 http://okwave.jp/qa/q3560357.html

  • coai
  • ベストアンサー率50% (152/301)
回答No.3

そのエラーが発生しているサーバー上に、テストプログラムを置いてトライ&エラーで原因を探すしかないんじゃないかな? 質問の記述を読む限り、(エラー発生後も)エラーが起こっている実サーバ上で動作検証はしていないように読めるんですが… (私の読み違いなら申し訳ない) もしそうだとすると、実サーバ上で操作したユーザさん全ての場合にエラーが発生しているけれど、連絡をくれたのは一人だけだったんじゃないかな?と思えて仕方ない。 ※あくまでシステム内容が判らない状態で、勝手に想像しているだけですが 100%エラーが発生していると仮定すると、エラー発生で一番怪しいのはやはりsendmail サクラ sendmail エラーで検索してみると、事例として似たものがいくつか。 http://www.dollpaper.com/info/363.html http://blog.longkey1.net/archive/812 スパム送信対策として、サクラサーバ上に作成済みのユーザーメールアドレス以外からは送信できないという仕様になっている? その制限に引っ掛かっている? 上記の記事からそんな風に想像しましたが、私はサクラサーバを使用した事がないので、実際は違うのかも知れません。

arisa_551
質問者

補足

おはようございます。 回答ありがとうございます。 私の説明の仕方が悪く本意が伝わっていませんでした。 テスト環境と言うのは、私の通信環境とPC環境の事をいいます。テストも本番も同じURLで行なっています。 ソースが2つ存在する事はありまん。 なので、テストでは通常通り、sendmailもしょうりゃく しているデータボースへの登録も成功しています。 ユーザーさまも送信ボタン後にメールは届いていますし、データの登録も出来ています。 重複しますが、送信ボタンを押すと、「登録ありがとうございました」がめんが表示されずに、internal server errorが表示されてしまうと言う状態です。 あらためて紹介いただいたリンク先等熟読させて頂きたいと思います。

回答No.2

関係ないかもしれないが、旧漢字とか、このソースだとメールにて文字化けして?にならない?

arisa_551
質問者

補足

ありがとうございます。 旧漢字チェックしていませんでした。 テストしてみたいと思います。

回答No.1

サーバ内のPHPプログラムの動作でエラーが出てるので、 ユーザーの環境ごとに異なる動作をするような内容で無ければ、 ユーザー(のブラウザとかの環境)によってはエラーが出る のではなく、 入力内容によってはエラーが出てるのだと推測します。 今はおそらく手元で再現できてない状態とおもいます。 ※テストと本番はまったく同じ環境・設定ではないですよね? 1,レンタルサーバの環境しだいでは取れませんが、apacheのエラーログを見てみましょう。   エラーの内容が書きだされてるかと思います。 2,エラーが出た時に入力した内容を教えてもらえれば教えてもらいましょう。 入力したデータのスクリーニングが甘くて意図しない値を入力されてエラーになってる気がするけど、 全体見てるわけでないのであくまでも推測。 外部からスパムメールの発信基地に利用されないようデータのチェックは必須

arisa_551
質問者

補足

ありがとうございます。 >※テストと本番はまったく同じ環境・設定ではないですよね? 全く同じ環境です。 私のテスト環境と言う説明がおかしかったので、誤解されたと思いますが、テスト環境は実サイトで自分の接続環境と言う意味です。(回線、PC等) メールは送信されていて、画面がinternal server errorが表示されている状態です。(自分がテストしてもメールは届いて、最終画面に行きます。) 入力のスクリーニングですが、ユーザーさんが「aaaa」と入力してもエラーが出ているようです。 (ユーザーさんと話したのですが、パソコン初心者でお客様と言う事もあり、強くテストのお願いも出来ないのです。お客様使ってテストって言うのも失礼ですし。ここ割愛で!) apacheのエラーログ見れるか確認してみます。

関連するQ&A

  • 日本語が使いたいのですが[mbstring]設定がわかりません

    環境は winxp sp2 apache 2.0.54 php 5.0.4 argosoftmailserver php.iniの設定は [mbstring] mbstring.language = Japanese mbstring.internal_encoding = EUC-JP mbstring.http_input = auto mbstring.http_output = SJIS mbstring.encoding_translation = Off mbstring.detect_order = auto mbstring.substitute_character = none です。足らない事があればお願いします。 下はphpの文です。 <?php $subject = "テスト"; $message = "あいうえお"; $test="日本語エンコーディングテスト"; print "$test (" . mb_detect_encoding($test) . ")<br>"; print ("mbstring.http_input=". mb_http_input() ."<br>"); print ("mbstring.http_output=". mb_http_output() ."<br>"); print ("mbstring.internal_encoding= ".mb_internal_encoding()."<br>"); $subject = mb_convert_encoding($subject, "SJIS", "EUC-JP"); $message = mb_convert_encoding($message , "SJIS", "EUC-JP"); mb_language("Japanese"); $chk = mb_send_mail('******@*******',$subject,$message,'From:***@******.dyndns.org'); if($chk==FALSE) { print "送信失敗"; } else { print "送信完了"; } ?> エンコードテストの結果は以下です。 日本語エンコーディングテスト (SJIS) mbstring.http_input= mbstring.http_output=SJIS mbstring.internal_encoding= EUC-JP よろしくお願いします。

    • ベストアンサー
    • PHP
  • php.ini 繰り返してるのはなぜですか⇒mbstring.internal~= UTF-8mbstring.internal~ =UTF-8;

    php.iniで mbstring.internal_encoding = UTF-8mbstring.internal_encoding = UTF-8; ↑2回続けて同じことを書いているこのプログラムはどういう意味なのでしょうか? ※設定サイトを見ながら EUCの部分をUTF-8に書き換えたのですが2か所ではなく後ろの部分だけの書き換えでよかったのかどうか疑問です。 解答宜しくお願いします。

    • 締切済み
    • PHP
  • メール送信

    現在独学でPHPの勉強をしており、行き詰まってしまいここで質問をさせて頂きました。 行き詰まった内容ですがphpでメール送信のスクリプトを書いたのですが エラーが出てしまい送れません。 こちらが私が書いたスクリプトになります。 <html> <head><title>mail.php</title></head> <body> <?php $address = $_POST["address"]; $subject = $_POST["subject"]; $message = $_POST["message"]; $header = "Content-Type: text/plain;charset=iso-2022-jp"; mb_language("Japanese"); if(mb_send_mail($address, $subject, mb_convert_encoding($message, "JIS", "EUC-JP"), $header)){ print("送信完了しました。"); }else{ print("エラー:送信に失敗しました"); } ?> </body> </html> エラーの内容ですが、 Fatal error: Call to undefined function mb_language() in C:~となっております。mb_languageが使えないとの表示が出てくるのですが、 色々な本などを調べてもこれを使ってる所もありなにが問題なのか分かりません。 php.iniでの設定(mbstring.internal_encoding = EUC-JP、extension=php_mbstring.dll)の ; などは外してみたりしてるのですが どうにも分かりません。 どなたかお分かりになるかたがいましたら是非教えて頂けないでしょうか。宜しくお願い致します。

    • ベストアンサー
    • PHP
  • windowsXP、XAMPPでメーラーMercuryを使用してローカ

    windowsXP、XAMPPでメーラーMercuryを使用してローカルでメールしたとき受信メールの SubjectがSubject: =?ISO-2022-JP?B?GyRCRnxLXDhsJTUlViU4JSclLyVIGyhC?=と文字化けします。 文字化けしないようにはどうすればいいのでしょうか。 下記内容がメールしたときのPHP、php/php.ini、メールの内容です。 また図がMercuryの設定内容です。 PHPの内容################################################################################# <?php $from = "admin@localhost"; $to = "admin@localhost"; $subject = '日本語サブジェクト'; $body = "本文です。\n日本語テスト"; //送信処理(日本語メール特有の文字コード変換とかヘッダの処理をする) $body = mb_convert_encoding($body, 'iso-2022-jp', 'UTF-8'); $subject = mb_convert_encoding($subject, 'iso-2022-jp', 'UTF-8'); $subject = mb_encode_mimeheader($subject, 'iso-2022-jp'); $headers[] = "From: $from"; $headers[] = 'Content-Type: text/plain; charset=iso-2022-jp'; $headers[] = 'Transfer-Encoding: 7bit'; mail($to, $subject, $body, join("\n", $headers)); ?> xampp/php/php.iniの内容################################################################################# [mail function] SMTP = localhost smtp_port = 25 sendmail_from = postmaster@localhost sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t" mail.add_x_header = Off mail.log = "C:\xampp\apache\logs\php_mail.log" [mbstring] mbstring.language = Japanese mbstring.internal_encoding = UTF-8 mbstring.http_input = auto mbstring.http_output = UTF-8 mbstring.encoding_translation = On mbstring.detect_order = auto mbstring.substitute_character = auto mbstring.script_encoding = UTF-8 メールの内容################################################################################# Received: from spooler by localhost (Mercury/32 v4.72); 26 Sep 2010 22:09:23 +0900 X-Envelope-To: <admin@localhost> Return-path: <postmaster@localhost> Received: from localhost (127.0.0.1) by localhost (Mercury/32 v4.72) with ESMTP ID MG000001; 26 Sep 2010 22:09:22 +0900 To: admin@localhost Subject: =?ISO-2022-JP?B?GyRCRnxLXDhsJTUlViU4JSclLyVIGyhC?= From: admin@localhost Content-Type: text/plain; charset=iso-2022-jp Transfer-Encoding: 7bit 本文です。 日本語テスト

    • ベストアンサー
    • PHP
  • mb_send_mailの2重投稿を防止したい

    初めて質問させていただきます。 動作環境はPHP4.3.0になります。 <? $to = "test@test.com"; $subject = "テスト"; $addheader = "From: $_POST[mail]\n"; $msg = "*************"; $to = mb_convert_encoding($to, "SJIS", "EUC-JP"); $subject = mb_convert_encoding($subject, "SJIS", "EUC-JP"); $msg = mb_convert_encoding($msg, "SJIS", "EUC-JP"); $addheader = mb_convert_encoding($addheader, "SJIS", "EUC-JP"); mb_language("Ja"); mb_internal_encoding("SJIS"); mb_send_mail($to, $subject, $msg, $addheader); setcookie("formdata", $posted , time()-1200); }; ?> 上記の用に記述をして、メールが届くのは確認をしたのですがなぜか9割位の確立でメールが二通届きます。 mb_send_mailの前後にecho分で文字を表示させたのですが、ループしている気配もありません。 どなたかこの現象を回避できる方法をお知りでしたらご教授下さい。 何卒、宜しくお願い致します。

    • ベストアンサー
    • PHP
  • sendmailの改行について

    sendmailの改行について PHPでsendmailにてメールを送信しようとしています。 mb_language("uni"); mb_internal_encoding("SJIS-WIN"); $body = "おはようございます\n"; $body = "こんにちわ\n"; $body = "さようなら\n"; mb_send_mail($to, $subject, $body, $header); 上述のコードにてメールを送信すると、 本文内の改行コードが無視されて、 「おはようございますこんにちわさようなら」 と送信されてしまいます。 改行されるようにするにはどうすれば宜しいでしょうか? 因みにPHP_EOL定数を使っても結果は同じです。

    • ベストアンサー
    • PHP
  • サーバー移転で文字化け

    ロリポップ!からhetemlにサーバー移転したところ、データベースから取り出したデータが文字化けするようになってしまいました。 因みにmysqlのデータは変換なしでエクスポートし、インポートしております。 ã€ã‚¨ãƒ´ã‚¡ã€‘ã½ã‹æ³ 上記のような文字化けです。 キャラクターセット周りが怪しいと思い、色々試してみましたが一向に治る気配がありません・・。 php varは5.3です。 .htaccessに「AddHandler php5.3-script .php」と記述して使っております。 mysql varはMySQL5.0.51aです。 MySQLのキャラクターセットはこんな感じです。 Variable_name Value character_set_client utf8 character_set_connection utf8 character_set_database utf8 character_set_filesystem binary character_set_results utf8 character_set_server utf8 character_set_system utf8 phpでの接続はこのようにしております。 mb_language('uni'); mb_internal_encoding('utf-8'); mb_http_input('auto'); mb_http_output('utf-8'); $con = mysql_connect('xxx','xxx','xxx') or die(mysql_error()); mysql_set_charset('utf8'); mysql_select_db('xxx') or die(mysql_error()); php.iniの設定は以下のとおりです。 mbstring.detect_order utf-8 mbstring.encoding_translation off mbstring.func_overload 0 mbstring.http_input pass mbstring.http_output pass mbstring.internal_encoding utf-8 mbstring.language neutral 何をやっても治らず、途方に暮れております。 ご助言をよろしくお願いいたします。

  • phpで携帯へのメルマガ配送について

    データベースから特定メアドを引き出しループで送信処理をしています。 ドメイン許可してもDocomoあてが届かない現象があり なにかうまい配送方法はないでしょうか? コードは以下です。 $sql = "select * from master where mailpermission = '$mp'"; $rs = mysql_query($sql,$con); while($row=mysql_fetch_array($rs)) { $toad =$row[7]; $name=$row[2]; $kanrino=$row[0]; //メール送信 $to .= $toad; $subject = $kenmei; $sendman = $postadjpn; $header .= 'From:'. mb_encode_mimeheader($sendman). " <".$postad.">\n"; $header .= "Return-Path:".$postad."\n"; $header .= "Date:"; $header .= date("D, d M Y H:i:s O"); $body .= "\n"; $body .= $name; $body .= "様"; $body .= "\n"; $body .= "\n"; $body .= $postnaiyou; $body .= "\n"; mb_internal_encoding("ISO-2022-JP"); ini_set("mbstring.internal_encoding","UTF-8"); mb_language("uni"); mb_send_mail($to,$subject,$body,$header); $to = ""; $subject = ""; $sendman = ""; $header = ""; $body = ""; } mysql_close($con);

    • 締切済み
    • PHP
  • Fatal error: マルチバイト文字列関数

    Fatal error: Call to undefined function mb_convert_encoding() 上記のようなエラーが出てしまい、困っています。 現状、phpinfo()で調べてみると 出現するはずのmbstringという項目がありません。 php.iniの状態が悪いのかと調べてみると extension=php_mbstring.dll の前には、;が無い状態です。 他の設定はこのようになっています。 mbstring.language = Japanese; mbstring.internal_encoding = UTF-8 ; mbstring.encoding_translation = On mbstring.http_input = auto ; mbstring.http_output = UTF-8 ; mbstring.detect_order = auto ; mbstring.substitute_character = none ; php.iniというファイル自体が2つあるとこのようなエラーがでるという 事例もあったので、検索をかけてみましたが php.iniというファイルは一つしか見つかりませんでした。 また、PHP自体、mb_の付く関数をはずすと、文字化けはしますが きちんと動いてくれました。 動作環境は win PHP5 Apache です。 どこを改善すれば、直ってくれるでしょうか? 教えて頂けると嬉しいです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • mb_send_mailでメール送信できない

    次のようなコードを使っているのですが、メールも送信できていません。 error_reportingでエラーをチェックしようとしても何も表示されません。 ブラウザには false しか表示されません。 サーバーはxserber,php5.3を利用しています。 メールアドレスの変更、サブジェクトを空、ボディを空、など試してみましたが、 falseのままで一度も成功しません。 phpファイルはUTF-8で作成しています。 ずっと悩んでいます。よろしくお願いします。 function sendMail( $to, $subject, $body ){ error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE); //言語設定、内部エンコーディングを指定する mb_language("japanese"); mb_internal_encoding("UTF-8"); $from = FROM_MAIL; //送信 if( mb_send_mail($to,$subject,$body,"From:".$from) ) echo "true"; else echo "false"; }

    • ベストアンサー
    • PHP