Parse error: syntax error, unexpected ‘&’ in …が表示される
PHP7 に対応したプログラムでない場合、以下のようなエラーが出ることがあります。
Parse error: syntax error, unexpected '&' in /home/....(該当のソースコードの場所)
このエラーは、参照渡しに関わる部分です。このようなエラーが出た場合、出たエラーのソースコードの場所、名前から関わっているソフトウェアを特定してください。
例えば、
Parse error: syntax error, unexpected '&' in /home/hogehoge/hoge.com/public_html/commu/admin_mysearch.php on line 136
上記のようになっている場合、commu のソースコードに問題があると考えられます。解決するには、
- ソフトウェアを最新にする(PHP7に対応しているなら)
- PHPのバージョンを5.6 に落とす
追加の情報
PHP 5.3.0 以降では、foo(&$a); のような形式で & を利用すると "Call-time pass-by-reference" を非推奨とする警告が発生します。 また、PHP 5.4.0 以降では call-time pass-by-reference 機能自体が削除されたので、 これを使おうとすると fatal エラーが発生します。 (引用)
PHP 5 以降、new は自動的にリファレンスを返すようになりました。そのため、この場面で =& を使用することは非推奨となりました。 PHP 5.3 以降では E_DEPRECATED、それより前のバージョンでは E_STRICT レベルのメッセージが表示されます。 また、PHP 7.0.0 以降は、文法的に無効となります (引用)
- オブジェクトと参照 http://php.net/manual/ja/language.oop5.references.php
- コンストラクタとデストラクタ http://php.net/manual/ja/language.oop5.decon.php
主に、上記の内容がPHP7, PHP7.1 で問題になりやすいです。
--
WordPress