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

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

ただいまの
回答率

90.34%

  • PHP

    21286questions

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

  • DB2

    65questions

    DB2(IBM Database2)は、IBMのリレーショナルデータベース管理システム製品です。 UNIXとWindows、IBM社のメインフレームOS用が用意されており、 幅広いプラットフォームに対応しています。

PHP7.1環境下でrequire_once("MDB2.php");でParse error

解決済

回答 4

投稿

  • 評価
  • クリップ 1
  • VIEW 3,393

miya_kodori

score 0

現在、PHP5.6で運用中のシステム(PHP+mySQLなどで制作)をPHP7.1配下での運用が出来るように、プログラムのバージョンアップを図ろうとしています。
xammpでテストした結果です。尚、こっそり本番でも起動させたところ、同じエラーメッセージが出ました。
MDB2を1回だけ呼んで以降pear関数を使ってMDB2を読みます。

1:PHP5.6では問題なく動きます。
2:PHP7.1では下記のエラーが、先頭で出ます。

(プログラムソース)
<?php
print"**point*0";
// MDB2 ライブラリの読み込み
require_once("MDB2.php");
print"**point*1";
以下省略    

(エラーメッセージ開始)
**point*0 Parse error: syntax error, unexpected 'new' (T_NEW) in C:\xampp\php\pear\MDB2.php on line 390

エラーメッセージ終了)

上記、Parse errorは文法エラーとのことですが、当方が記述した部分はrequire_once("MDB2.php");だけなので、文法が間違っているとは思えません。何が問題なのでしょうか?、また、このような時、エラーログなどの見方、出力方法などを御教示頂くと助かります。
宜しくお願い申し上げます。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

+2

 下記のような原因でエラーが発生している模様です。

PHP 下位互換性のないその他の変更
どうやらMDB2.phpの390行目で新しいオブジェクトを参照渡しで変数に代入しているようで、そのような記述方法はPHP5系では非推奨とされていたらしいですが、PHP7ではエラーを返すように変更になったようです。(本当にMDB2.phpの390行目で新しいオブジェクトを参照渡しで変数に代入しているかどうかは、実際のコードは見れていないので、憶測ですが)

 エラー調査方法

『**point*0 Parse error: syntax error, unexpected 'new' (T_NEW) in C:\xampp\php\pear\MDB2.php on line 390』
このエラー文言から調査しました。

プロセスとしては、
1、エラー文言を見て、「MDB2.phpの390行目で'new' (T_NEW) というのが原因で文法エラーが起きている」と認識
2、自作コードではなくライブラリの記述によるもの、かつphp5系では動きphp7系では動かない⇨php7でエラーが吐かれるように変更になった処理がライブラリ内で記述されているのでは?と予測
3、『php T_NEW』でググる⇨PHP公式ドキュメント確認⇨たぶんこれだ

Parse errorについては調査できていたみたいなので、もうちょっとググればご自身でも見つけ出せる答えかと思います。頑張って下さい。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

check解決した方法

0

私の場合の ”MDB2.php”のエラー”~unexpected 'new' (T_NEW)〜”は、御指摘頂いた、「MDB2.phpの390行目で新しいオブジェクトを参照渡しで変数に代入している」が原因だと思いました。ありがとうございます。しかしながら、MDB2.phpはpearコマンドでインストールして組込むシステムの一部で、個人的に修正すべきものでは無いと考えました。中身のコードを見ますと、2007年以降、修正されておりません。PHP7.1に準拠した修正はされなかったということになります。
「去る者は追わず」で、MDB2.phpにはあっさり見切りをつけ、「PDO対応」が正当な方法と考えて修正しています。
御指摘ありがとうございました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

MDB2.php の 390行目でエラーがでてるようですね。
インストールが不足してるのかと思ったけどちがうよう。
推測ですが…

PHP マニュアル 付録 PHP 5.6.x から PHP 7.0.x への移行
下位互換性のない変更点
変数の取り扱いの変更
変数やプロパティ、メソッドへの間接的なアクセスの扱いの変更
http://php.net/manual/ja/migration70.incompatible.php#migration70.incompatible.variable-handling.indirect

このあたりにひっかかってるのかなあ、と。
対策としては PDO に移行する?
http://nazonohito51.jugem.jp/?eid=49

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

同じ現象が出ていましたので、以下のページを参考にしたところ解決しました。

http://doroyamada.hatenablog.jp/entry/20160612/1465740553

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

同じタグがついた質問を見る

  • PHP

    21286questions

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

  • DB2

    65questions

    DB2(IBM Database2)は、IBMのリレーショナルデータベース管理システム製品です。 UNIXとWindows、IBM社のメインフレームOS用が用意されており、 幅広いプラットフォームに対応しています。