質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

3696閲覧

PHPMailer6 でのエラー

chapp

総合スコア233

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2019/02/21 15:15

編集2019/02/22 06:08

お世話になります。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

という記述があったためであり、利用しているサーバー会社に問い合わせて確認をとることが出来ました。

ありがとうございました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cerfweb

2019/02/21 15:46

Parse error: syntax error, unexpected '[' というエラーメッセージですが、差し障りない程度で最後の部分まで記載いただけますか。
cerfweb

2019/02/21 16:10

エラー箇所として示されているのはPHPMailer.php の304行目あたりでしょうか。 また、その場合このファイル自体に手を加えたことはありませんか。
cerfweb

2019/02/21 20:16 編集

念の為、もう一度phpinfo()でバージョンを確かめていただけますか。
guest

回答3

0

自己解決

自己解決という表現は不適当かと思いますが、質問の修正依頼を受ける際、php7.1として使っているはずのバージョンが、php5.3出会ったことが判明し、これを7.1に戻すことで解決しました。これもcerfwebさんのおかげです。

このバージョンが違っていた原因は、htaccessに

AddHandler application/x-httpd-phpcgi .php AddType application/x-httpd-php .php .html

という記述があったためであり、利用しているサーバー会社に問い合わせて確認をとることが出来ました。

回答いただけました方にもお礼をし、解決済みとさせていただきます。

ありがとうございました。

投稿2019/02/22 06:16

chapp

総合スコア233

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

PhpinfoによるとPhp 5.3を使っていますね。
[]と言う配列のノテーションはサポートされてないわけです。
Array()しかできません。

解決方法はphpバージョンを5.4以上にする事ですね。

元々の仮説1(確かに関係ない)

php

1public $SMTPOptions = [];

が怪しいですね。全角スペースとか入ってないでしょうか。

投稿2019/02/22 00:27

編集2019/02/22 00:46
vanderlvov

総合スコア685

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

chapp

2019/02/22 06:02

vanderlvovさん お忙しい中での回答、ありがとうございます。 今回、質問の修正をいただいた際、PHPのバージョンを確認するよう求められたのですが、php7.1として利用しているつもりのサーバーが、php5.3となっていたためのエラーでした。5.4以降でなければならないと調べてはいたものの、まさか5.3だったとは・・お騒がせしました。 ありがとうございました。
guest

0

public $SMTPOptions = [];は配列として初期化することを表し、構文として問題ないです。

Parse error: syntax error, unexpected '['のエラー文、全文記載可能ですか?(path にユーザ名が含まれるならそこだけダミーでも良いです)
普通に考えると、test しているライブラリ側で syntax error とか考えにくいです。

投稿2019/02/22 00:35

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

chapp

2019/02/22 06:00

te2jiさん お忙しい中での回答、ありがとうございます。 >初期化することを表し、構文として問題ないです。 はじめみる記述でした。ありがとうございます。 >普通に考えると、test しているライブラリ側で syntax error とか考えにくいです。 質問の修正をいただいた際、PHPのバージョンを最閣員するよう求められたのですが、php7.1として利用しているつもりのサーバーが、php5.3となっていたためのエラーでした。 ただいま、バージョンの設定を見直し,正常に稼働するまで確認しています。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問