お世話になります。PHPMailer6.0を使いたく色々と試していますが、以下のようなエラーが出ており、対処法が分からず困っています。
Parse error: syntax error, unexpected '['
このエラーはPHP5.4以前だと、短縮構文が使えずにエラーとなる・・・というところまでは分かったものの、現在の環境はPHP7.0であり、Parse error: syntax error, unexpected '['のエラーに関する5.4以降の情報にたどり着きません。
ちなみに、エラーとして書かれてる個所は、
public $SMTPOptions = [];
の部分ですが、このような記述をあまり目にすることなく、その対処法が分かりません。
肝心の配信を実行する際のコードは動作テストとして以下のようなものを設定しています。
<?php use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require($_SERVER['DOCUMENT_ROOT'] . '/PHPMailer/src/Exception.php'); require($_SERVER['DOCUMENT_ROOT'] . '/PHPMailer/src/PHPMailer.php'); require($_SERVER['DOCUMENT_ROOT'] . '/PHPMailer/src/SMTP.php'); //SMTPの設定 $mailer = new PHPMailer(); $mailer->IsSMTP();//SMTPを作成 $mailer->Host = '******'; $mailer->CharSet = 'utf-8'; $mailer->SMTPAuth = TRUE; $mailer->Username = '***@***.com'; $mailer->Password = '******'; $mailer->SMTPSecure = 'tls'; $mailer->Port = 587; $mailer->SMTPDebug = 2; //メール本体 $to = "***@***.jp"; $mailer->From = '***@***.com'; $mailer->FromName = mb_convert_encoding("太郎","UTF-8","AUTO"); $mailer->Subject = mb_convert_encoding("件名","UTF-8","AUTO"); $mailer->Body = mb_convert_encoding("本文だよ\n本文です","UTF-8","AUTO"); $mailer->AddAddress($to); // To宛先 //送信する if($mailer->Send()){} else{ echo "送信に失敗しました" . $mailer->ErrorInfo; } ?>
以上ですが、解決に向けアドバイスいただくことは可能でしょうか。
お忙しい中恐縮ですが、よろしくお願いいたします。
■エラーの詳細
Parse error: syntax error, unexpected '[' in ~とこのあとパスへと続き、エラー箇所とされているのが、以下の部分です。
public $SMTPOptions = [];
■エラーを示す該当ファイルに関して
ご質問ありがとうございます。上記エラー箇所を示しているのは、PHPMailer.phpの304行目の、public $SMTPOptions = [];の部分です。
見直し等行っていますが、デフォルトで用意されているファイルには基本、修正などは行っていません。
■PHPのバージョンについて
cerfwebさまからの指摘でPHPのバージョンを再確認したところ、phpinfoでは5.3となっていました!
現在借りているサーバー上にアップしながら動作確認を進めており、そのサーバーではphp7.1(7.0じゃなかった)と公式にアナウンスされているので、まさかという感じです。
いずれにしても再度設定を確認し、改めて動作確認を進めてみます。
改めてご報告させていただきますので、今回の質問、未解決のままとさせていただきます。
ご連絡頂けなければ気づかなかったこと。ありがとうございました!
■解決
php7.1として使っているはずのバージョンが、php5.3出会ったことが判明しました。これもcerfwebさんのおかげです。
このバージョンが違っていた原因は、htaccessに
AddHandler application/x-httpd-phpcgi .php AddType application/x-httpd-php .php .html
という記述があったためであり、利用しているサーバー会社に問い合わせて確認をとることが出来ました。
ありがとうございました。
回答3件
あなたの回答
tips
プレビュー