0

お問い合わせフォームを作成しようとしていますが、次の一般的なエラーが発生しています。

    Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, cgiadmin@yourhostingaccount.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

エラーを実際にログに記録またはエコーする方法がわかりません。これは私のphpファイルです:

<?php
ini_set('display_errors', true);
ini_set('log_errors', true);
error_reporting(E_ALL);
ini_set('error_log', 'php.log');
$field_fname = $_GET['fname'] ;
$field_lname = $_GET['lname'] ;
$field_bname = $_GET['bname'] ;
$field_email = $_GET['email'] ;
$field_address = $_GET['address'] ;
$field_city = $_GET['city'] ;
$field_state = $_GET['state'] ;
$field_zip = $_GET['zip'] ;
$field_country = $_GET['country'] ;
$field_comments = $_GET['comments'] ;

$mail_to = 'myemail@mydomain.com';
$subject = 'Message from a site visitor '.$field_fname .$field_lname;

$body_message = 'From: '.$field_fname .$field_lname 'at' .$field_bname "\n";
$body_message = 'E-mail: '.$field_email "\n";
$body_message = 'Address:'.$field_address "\n";
$body_message = 'City:'.$field_city "\n";
$body_message = 'State:'.$field_state "\n";
$body_message = 'Zip Code:'.$field_zip "\n";
$body_message = 'Country:'.$field_country "\n";
$body_message = 'Message: '.$field_comments;

$headers = 'From: '.$field_email."\r\n";
$headers .= 'Reply-To: '.$field_email."\r\n";

$mail_status = mail($mail_to, $subject, $body_message, $headers);

if ($mail_status) { ?>
    <script language="javascript" type="text/javascript">
        alert('Thank you for the message. We will contact you shortly.');
        window.location = 'index.html';
    </script>
<?php
}
else { ?>
    <script language="javascript" type="text/javascript">
        alert('Message failed. Please, send an email to myemail@mydomain.com');
        window.location = 'index.html';
    </script>
<?php
}
?>

私がしていることが間違っているかどうかはわかりません。誰かがエラーを見つけるのを手伝ってくれるか、エラーをログに記録またはエコーするように指示してくれれば、本当に感謝しています。

ありがとう

4

4 に答える 4

1

コードをso.phpというファイルに入れましたが、解析エラー行20があります

PHP Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in so.php on line 20

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in so.php on line 20

Errors parsing so.php

$field_lname前後に20 行目の連結ドットが抜けています'at'

システムに php をローカルにインストールして (簡単な例では wamp)、php 実行可能ファイルをパスに配置して、コマンド ラインphp -l filename.phpを実行して上記のようなインスタント パース エラー メッセージを取得することに興味があるかもしれません。

すべての解析エラーが修正されたコードは次のとおりです。

<?php
ini_set('display_errors', true);
ini_set('log_errors', true);
error_reporting(E_ALL);
ini_set('error_log', 'php.log');
$field_fname = $_GET['fname'] ;
$field_lname = $_GET['lname'] ;
$field_bname = $_GET['bname'] ;
$field_email = $_GET['email'] ;
$field_address = $_GET['address'] ;
$field_city = $_GET['city'] ;
$field_state = $_GET['state'] ;
$field_zip = $_GET['zip'] ;
$field_country = $_GET['country'] ;
$field_comments = $_GET['comments'] ;

$mail_to = 'myemail@mydomain.com';
$subject = 'Message from a site visitor '.$field_fname .$field_lname;

$body_message = 'From: '.$field_fname .$field_lname .'at' .$field_bname ."\n";
$body_message = 'E-mail: '.$field_email ."\n";
$body_message = 'Address:'.$field_address ."\n";
$body_message = 'City:'.$field_city ."\n";
$body_message = 'State:'.$field_state ."\n";
$body_message = 'Zip Code:'.$field_zip ."\n";
$body_message = 'Country:'.$field_country ."\n";
$body_message = 'Message: '.$field_comments;

$headers = 'From: '.$field_email."\r\n";
$headers .= 'Reply-To: '.$field_email."\r\n";

$mail_status = mail($mail_to, $subject, $body_message, $headers);

if ($mail_status) { ?>
    <script language="javascript" type="text/javascript">
        alert('Thank you for the message. We will contact you shortly.');
        window.location = 'index.html';
    </script>
<?php
}
else { ?>
    <script language="javascript" type="text/javascript">
        alert('Message failed. Please, send an email to myemail@mydomain.com');
        window.location = 'index.html';
    </script>
<?php
}
?>
于 2013-03-21T22:09:08.200 に答える
1

.をビルドするときに concatenators( ) のヒープがありません$body_message

$body_message = 'From: '.$field_fname .$field_lname.'at' .$field_bname."\n";
$body_message = 'E-mail: '.$field_email."\n";

等々。

適切なエディターは、ファイルを保存する前に、これをエラーとしてフラグ付けします。

于 2013-03-21T22:11:00.037 に答える
1

デフォルトで表示エラーがオフになっているサーバーを使用している可能性があります。これを PHP の先頭に置くと、スクリプトでそれらを有効にできるはずです (サーバー conf にアクセスできないか、1 つのスクリプトに対してのみ有効にしたい場合)。

ini_set("display_errors", "on");

次に、エラーを出力する必要があります。

于 2013-03-21T22:12:15.843 に答える
0

ログに何も取得されない理由は、エラー ログとログ ファイルを設定する php ファイルに構文エラーが含まれているため解析できないため、エラー ログ オプションが設定されないためです。これを避けるために、これを php.ini ファイルまたは .htaccess ファイルに入れることをお勧めします。これがどのように行われるかは、http: //perishablepress.com/advanced-php-error-handling-via-htaccess/で確認できます。

于 2013-03-21T22:23:44.290 に答える