• ベストアンサー
  • 困ってます

PHP5になったら動かない

サーバレンタル会社の都合でPHP4だったのがPHP5になりました。 特に不都合なく動いてたのですが、今日1個エラーが出ているプログラムを確認しました。 どんどん行を削っていってどうもここがおかしいというところをつきとめたのですが、PHP5についてはまったく知識がない状態だったので何がおかしいのかさっぱりわかりません。 ご教授お願いいたします。 【ソース】 <?php if(!$m){ print $buff3[0]."件中 500位以内にありませんでした。"; } print "<p>&nbsp;</p>"; ?> 【実行結果】 Parse error: syntax error, unexpected '>' in /public_html/hogehoge.php on line 6 if文を削除すると動くので、!$mの記述方法が悪いのかとにらんでいます。 よろしくお願いいたします。

共感・応援の気持ちを伝えよう!

  • 回答数5
  • 閲覧数202
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.4
  • yyr446
  • ベストアンサー率65% (870/1330)

たびたびどうも、非互換例を眺めていてふと気づきました。 if(!$m) ですが、もしかして$mはプロパティを何も持たないオブジェクトで 初期化もしてないのではないでしょうか。PHP4ではヌルでしたが PHP5では中身が無くてもヌルではありません。 この結果if(!$m)がPHP4ではfaleだったものがphp5ではtrueになり   print $buff3[0]."件中 500位以内にありませんでした。"; が今までは実行されなかったのに、実行されてしまいます。 この時$buff3[0]の中身が適切でなければエラーとなったのでは..?

共感・感謝の気持ちを伝えよう!

質問者からのお礼

どうもありがとうございます。 今、別の環境で自分の書いたソースをコピペして同じ環境に別ファイルでアップしたら問題なく 件中 500位以内にありませんでした。 と表示されました。 何か違う問題のようです。きちんと確認して再度質問させて頂きます。 お騒がせしました。m(_*_)m

関連するQ&A

  • 携帯、スマートフォンのPHP振り分け

    こんなPHPを書いているのですが どうしてもParse errorが出ます。 解決方法を教えて下さい!! ■エラー内容 Parse error: syntax error, unexpected T_EXIT in /home/sites/heteml/users/web/m/index.php on line 5 ■振り分けPHP <?php $agent = $_SERVER['HTTP_USER_AGENT']; if(preg_match("/^DoCoMo/i", $agent)){ header("Location: &#8203;http://www.hogehoge.com/m/i/index.html");&#8203; exit; }else if(preg_match("/^(J\-PHONE|Vodafone|MOT\-[CV]|SoftBank)/i", $agent)){ header("Location: &#8203;www.hogehoge.com/m/s/index.html");&#8203; exit; }else if(preg_match("/^KDDI\-/i", $agent) || preg_match("/UP\.Browser/i", $agent)){ header("Location: &#8203;www.hogehoge.com/m/e/index.html");&#8203; exit(); }else if(preg_match("iPhoneやスマートフォン用の判定", $agent)){ header("Location: www.hogehoge.com/m/smt/index.html"); exit(); }else{ header("Location: &#8203;www.hogehoge.com/m/pc/index.html");&#8203; exit(); } ?> よろしくお願い致します。

    • ベストアンサー
    • PHP
  • phpと<?xml version="1.0" encoding="utf-8"?>

    phpファイルの頭に<?xml version="1.0" encoding="utf-8"?>を入れると Parse error: syntax error, unexpected T_STRING in ・・・ というエラーが出ます。 なぜでしょう?

    • ベストアンサー
    • PHP
  • PHPのエラーについて質問です

    PHPのエラーについて質問です XAMPPをインストールして、 http://localhost/top.php のように、フォルダの中身のファイル名を指定すると、 以前までは、ちゃんと表示されていたものが、 Parse error: syntax error, unexpected $end, expecting T_VARIABLE or T_END_HEREDOC or T_DOLLAR_OPEN_CURLY_BRACES or T_CURLY_OPEN in C:\xampp\htdocs\top.php on line 68 のようにエラーが表示されるようになりました。 解決策を教えてもらえないでしょうか?

    • ベストアンサー
    • PHP

その他の回答 (4)

  • 回答No.5
  • se-nabe
  • ベストアンサー率34% (31/91)

うーん例え$mが定義されていなくて、 ifが通っても、別にエラーは出ないと思うんですよね。。 こうなったら、地味にデバックしか方法はなさそうですね。 2つあるprintを片方ずつコメントアウトして、 エラーが出るか。 それでも出るなら、$mと$buff3をvar_dump して、内容確認。 それでもだめなら、そこのif文だけ取り出して、hoge.php とかにして、表示させましょう。 まさかとは思いますが、$が大文字とかないですよね?

共感・感謝の気持ちを伝えよう!

質問者からのお礼

何か環境とかブラウザのキャッシュとかの問題だったみたいです。 (一応複数のブラウザで動かしてみたんですが。。。) お騒がせしました。

  • 回答No.3
  • yyr446
  • ベストアンサー率65% (870/1330)

「今日1個エラーが出ているプログラムを確認しました。」 の最初のエラーメッセージは何だったのでしょうか? PHP4=>PHP5で、一番大きな影響は、オブジェクト変数の代入文です。 $a = $b; とした場合PHP5では $a =& $b; の意味になります。つまりPHP4の時は、$aと$bは完全に別物 としてメモリー領域が確保されましたが、PHP5では同じメモリー 領域を参照しています。 従ってPHP5で$b->x = "X"; とすると、$a->xも"X"になります。 その他非互換については参照URLをみて下さい。 (私も意味がよくわからないものもありますが)

参考URL:
http://www.php.net/manual/ja/migration5.incompatible.php

共感・感謝の気持ちを伝えよう!

質問者からの補足

最初のエラーもsyntaxerrorで、同じ行でした。 オブジェクト変数の代入文に関しても->clone();で試してみたりしました。 (というかわずか8行の上記ソースでは使う場所ないですけど^^) 関係ないですが、 $buff=$_POST["$buff"]; という文はそのままPHP5になっても使っていいものでしょうか??

  • 回答No.2
  • se-nabe
  • ベストアンサー率34% (31/91)

そうですね、 syntaxなんで、単純な記述ミスが一般的です。 別に見たところ、php5が対応していない所はないと思いますが・・・ 全角スペースとか入ってますか?

共感・感謝の気持ちを伝えよう!

質問者からの補足

一応全角がくさいと思って、テキストエディタで全角のスペースを記号で表示するようにしてみたのですが、見つかりませんでした。

  • 回答No.1
  • yyr446
  • ベストアンサー率65% (870/1330)

「どんどん行を削って」の作業中に、どこかで " とか ' とか . とか { とか }を誤まって削除していませんか? エラーメッセージを見るとそんな気がします。

共感・感謝の気持ちを伝えよう!

質問者からの補足

んー上記のソースを動かした結果をそのまま載せているのですが。。。 PHPではなく他の原因ですかね・・・

関連するQ&A

  • PHPについて

    xamppをインストールしてPHPの学習をしております。 そこで、 PHPについて以下2つの質問があります。 質問1 関数の引数について <?php phpinfo(); ?> は、phpの情報を表示するスクリプトですが、関数の()の中に 引数を書くときは、引数を""で囲む場合と囲まない場合はあるのでしょうか? 質問2 エラーについて ファイル名:client.php <?php print "あなたのIP:"; print getenv("REMOT_ADDR"); print "<BR>" print "あなたのホスト名"; print gethostbyaddr(getenv("REMOTE_ADDR")); ?> 上記スクリプトを作成して、http://localhost/client.phpとブラウザ で実行したところ、 Parse error: syntax error, unexpected T_PRINT in C:\xampp\htdocs\client.php on line 5 というメッセージが表示され、5行目【print "あなたのホスト名";】を何回も見ていますが、 何も間違っていない気がします。何が間違っているのでしょうか? どなたかご教授下さい。

    • ベストアンサー
    • PHP
  • 三項演算子/echoとprintの違い

    <?php $sex=1 ? echo "男性" : echo "女性"; ?> だと、下記エラーになりました。 Parse error: syntax error, unexpected T_ECHO 試しに、 <?php $sex=1 ? print "男性" : print "女性"; ?> としたところ、無事表示されました。 echoとprintって同じだと認識していたのですが、 何が違うのでしょうか? あと、$sex=1ではなく、 $sex==1とした方がよいのでしょうか?

    • ベストアンサー
    • PHP
  • PHPのdefineで「@」を使う方法

    PHPにてdefineで定数を「@」を含む文字列で宣言したいのですが、 define("HOGE", "hoge@hoge"); と言った設定をすると Parse error: syntax error, unexpected '@' のエラーが出てしまいます。 どのように記述すれば「@」を含む文字列を宣言する事が出来るのでしょうか?

    • ベストアンサー
    • PHP
  • PHPのエラー「Unexpected character ...」「syntax error, unexpected ...」について

    PHP Warning: Unexpected character in input: ''' (ASCII=39) state=1 in /home/***/***.php on line 25 PHP Parse error: syntax error, unexpected '<' in /home/***/***.php on line 26 という2行のエラーが表示されました。 まったく明快な答えは探せませんでした。 もしも少しでも手がかりになるような情報がありましたら教えて下さい。 お願いします。

    • 締切済み
    • PHP
  • phpファイルを開けない(ブラウザにエラー表示)

    こんにちは! PHPを勉強中なのですが、あるphpファイルをブラウザで開こうとすると 以下のように表示が出てしまい、ファイルが開けません。 ------------エラー文------------------------------------------- Parse error: syntax error, unexpected '<' in C:\xampp\htdocs\hello.php on line 128 --------------------------------------------------------------- これは何が原因のエラーなのでしょうか? 有識者の方いらっしゃいましたらご指導宜しくお願い致します。

    • ベストアンサー
    • PHP
  • phpでのjavaSの記述方法

    下記の条件の時phpで if (strlen($ken3) and strlen($ken4) > 0) { ”<script Language="JavaScript"><!-- alert("警告"); // --></script>”; } 警告ウィンドウを表示したいのですが、 Parse error: syntax error, unexpected となります。 また、変数で $javas = "<head> <title>警告ウィンドウを表示する</title> <script Language="JavaScript"><!-- alert("警告"); // --></script> </head>";と記述してもParse errorとなります。 警告ウィンドウの記述方法は?

    • 締切済み
    • PHP
  • phpのエラー(T_LNUMBER)について

    Parse error: syntax error, unexpected T_LNUMBER, expecting ',' or ';' in /..../..../result.php on line 202 というエラーが出ます。 このエラーはresult.phpファイルの202行目に「,」もしくは「;」が足りないよという意味を示していると思うのですが、どう足りないのかというところでひっかかっています。 改行してみたりして行数を確認してみると、特定のコードの箇所に対するエラーでした。 以下が該当する202行目のコードです。 if ($p > 1) { echo "<font size=&#165;"1&#165;"><a href=&#165;"$_SERVER[PHP_SELF]?p=$prev1&#165;"><</a></font>"; } 上記コードのecho "~~~~~の行が202行目です。 これはどこが間違っているのでしょうか? もしくはそもそも違う部分で間違っている可能性があるということなのでしょうか。。。 アドバイスをいただけないでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPのif文について。

    今PHPのif文で前のページで入力したIDとPWをファイルで読み込んだIDとPWを使い 一致したらログインするという形をとろうとしています。 ぶっつけでは不安なので一応if文が通るかどうか実験したのですが、 Parse error: syntax error, unexpected '[', expecting '(' in C:\xampp\htdocs\ninsho.php on line 7 とエラーが出てきます。 軽く調べたところ[の使いかたを間違えてるとあったのですが、[は配列の場所を指定するのに 必須だと思うのでおかしいところがわかりません。 ちなみに全角なんじゃないかと思い全部打ち直してるので全角で入力という間違いはありません。 ↓こちらが今回の問題のものです。 1:<?php 2:$id = $_POST["id"]; 3:$pw = $_POST["pw"]; 4:$array = file("C:\acount.csv"); 5:for ($i=0; $i < count($array); $i++) { 6:$line = explode(",", $array[$i]); 7:if ($id === array[0] && $pw === array[1]) 8:{ 9:print $id 10:} 11:} 12:?> if文の===と==とimplodeは試してみましたが同じエラーでした。 どなたか原因のわかる方はいらっしゃらないでしょうか? ※ 1:などは行数をわかりやすくるるために今入力したものです。

    • 締切済み
    • PHP
  • PHPのParse errorについて質問

    PHPのParse errorについて質問ですが、 昨日より、Apacheサーバーなどの設定を変更していないにも関わらず、急に以下の様なエラーが頻繁に 表示されます。 原因は、なんでしょうか? どうやって修正すればいいのでしょうか? Parse error: parse error, unexpected T_ELSE in ディレクトリ名/index.php on line 43

    • ベストアンサー
    • PHP
  • evalの中でNULLを使用して比較したい

    PHP5.2.4を使用しています。 次のようなevalを使って式を評価させたいのですが、 NULLを比較させると Parse error: syntax error, unexpected T_IS_NOT_EQUAL in test.php(11) : eval()'d code on line 2 というようなエラーがでてしまいます。 どうすればevalの中でこの条件式を成立させることができるのでしょうか? $left = NULL; $right = 1; $str = ' if('.$left.' != '.$right.') { print "not<br>\n"; } '; eval($str);

    • ベストアンサー
    • PHP