PHPについて~関数の引数とエラーについて~

このQ&Aのポイント
  • xamppを使ってPHPを学習している中で、以下の2つの質問が出てきました。
  • 質問1:phpinfo()関数の引数について、引数を囲むか囲まないかはどうしたらいいのか?
  • 質問2:client.phpファイルを実行した際に表示されるエラーメッセージについて、5行目の記述に問題はないと思うのですが、何が間違っているのでしょうか?
回答を見る
  • ベストアンサー

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
  • 回答数3
  • ありがとう数0

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

質問1について抜けてました。 具体的な例はどんなものでしょうか? 例えば $a='abc' ; func($a) ;  # $aの内容(文字列)がfuncに渡される → func('abc') の意味 func("$a") ;  # $aの内容('abc')を展開した文字列が渡される → func('abc') の意味 なら、同じ意味になりますが $a=123 ; func($a) ;  # $aの内容(数値)がfuncに渡される → func(123) の意味 func("$a") ;  # $aの内容(123)を文字列に変換し、それを展開した文字列が渡される → func('123') の意味  だと、異なる意味になります。 また func('PHP_VERSION') ;  では、PHP_VERSION という文字列ですが、 func(PHP_VERSION) ;  では、 定義済み定数 PHP_VERSION の内容(例えば 5.4.0 とか)になります。 http://php.net/manual/ja/reserved.constants.php 囲む、囲まないは、目的や関数の仕様に合せてください。

その他の回答 (2)

  • t_ohta
  • ベストアンサー率38% (5083/13283)
回答No.2

5行目【print "あなたのホスト名";】でエラーが出るのは4行目に問題があるからなのですが、PHPとしては4行目に問題があるのでは無く続く5行目に問題があると判断したためです。 どちらが問題なのかは機械的に判断するのが難しい場合があるので、エラーメッセージは額面通りに受取るのではなく、少し前の処理から見直すようにしましょう。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

ちょっと検索してみたら、ちょうどいいのがありました http://builder.japan.zdnet.com/off-topic/sp_10-reasons-programming-2008/20373555/4/ > 何も間違っていない気がします。 こういう思い込みが、プログラミングには大敵です。 > 5行目【print "あなたのホスト名";】を何回も見ています エラーメッセージに書いてある行と、そのエラーの真の原因とは、一致するとは限らない、ということです。

関連するQ&A

  • PerlからPHPに移植したアクセス制限

    下記は、CGIファイルから持ってきたスクリプトをPHPに変換してみたものです。 エラーが出るの出ます-> Parse error: syntax error, unexpected '/', expecting ')' in /home/users/1/raindrop.jp-5247423/web/tsukushinbo/bbs/bbs_header.php on line 32 どう修正すれば教えていただきたいです。 <?php #----------------# # ホスト名取得 # #----------------# function get_host(){ $host = $_SERVER{'REMOTE_HOST'}; $addr = $_SERVER{'REMOTE_ADDR'}; if($gethostbyaddr){ if ($host === "" || $host === "$addr") { $host === gethostbyaddr(pack("C4", split(/\./, $addr)), 2); $host === gethostbyaddr(pack($addr)); } } if($host === "") { $host = $addr; } } ?>

    • ベストアンサー
    • PHP
  • php 自作関数

    PHPでfunctionによって定義される関数を作っているのですが 引数なしで関数をつくることは可能なのでしょうか? 例えば function hello{ print "HelloPhp"; } 理想ではphp側でhello関数を呼び出せばHelloPhpと出力されます 実際の使い道は関数名が使い辛いので別の名前で関数名を定義したいんです 引数を与えてもいいのですがfunction側で引数が固定されるためphp側と毎回同じ変数:引数にならない 説明し辛いのですが 先ほど述べた理由で使いたいのですが、わかる方いらっしゃったらよろしくお願いします

    • 締切済み
    • PHP
  • VB6でのgethostbyaddrの使用方法について

    IPアドレスからホスト名(コンピュータ名)を取得するため gethostbyaddrを使用したいのですがうまくいきません。 (動くのですが戻り値が常に0となります。名前解決はできています。また、gethostbynameは正常に動きました。) すみませんが教えてください。 HOSTENT = gethostbyaddr(addr,inglen,ingtype) 上記のaddr、inglen、ingtypにはどのような値を入れればよいので しょうか? addrはgethostbynameで取得した値(102379333)を入れるのでしょうか? それとも「10.10.999.999」のような値を入れるのでしょうか? 環境は以下の通りです。 OS:Windows XP またはWindows2003 server 言語:VB6 使用関数はgethostbyaddrを使用しないといけません。 調べたところいろいろありましたが 具体的なコーディングがありませんでした。 お手数ですがよろしくお願いします。

  • xamppの初期設定ができません

    xampp落としてPHPしようとおもったんですが phpinfoが表示されません。 xamppトップにあるphpinfoから入った画面ですら、エラーと出てきます。 どうしたらいいんでしょうか??

    • 締切済み
    • PHP
  • PHPのdate()について

    date()関数は日時などを表す関数ですが、 下記スクリプトを実行すると、現在の時刻 を表示するらしいのですが、実際にブラウザ で表示すると、0と表示され、現在時刻が表示 されませんでした。 <?php print date("G"); ?> そこで、xamppのphp.iniファイルのタイムゾーンを修正 [date] #date.timezone = Europe/Berlin date.timezone = Asia/Tokyo として <?php print date("G"); ?> を実行しましたが、やはりブラウザには0とだけ表示されます。 なので、phpスクリプトを <?php date_default_timezone_set("Asia/Tokyo"); print date("G"); ?> としたら 意図したとおり、11時台に実行したら、11と表示されました。 この違いは一体なんなのでしょうか? ご教授下さい。

    • ベストアンサー
    • PHP
  • PHP環境について

    PHP初心者です。 PHPの環境を作り、Windows環境のローカル端末にて開発をはじめようと思っているのですがApache HTTP Server 2.0.55とXAMPPをインストールし、XAMPPコントロールパネルからApacheのサービスを起動したにもかかわらず、下記内容のPHPファイルを作成してC:\Program Files\xampp\htdocs\info.php に保存してもphpの情報が表示されません(404Error)。 ーーーーーーーーー <?php phpinfo(); ?> ーーーーーーーーー また、XAMPPはhttp://localhost/xampp/index.php のアドレスでWebベースのXAMPPコントロールパネルが表示されるはずですが、表示されません(404Error)。 おそらくPHPが正常に動作していない(起動していない)ような気がするのですが、どのような原因が考えられますでしょうか?? ちなみにhttp://localhost/のアドレスだと「あなたの予想に反して・・・」の表示が確認できます。 また、ApacheがインストールPHP4⇔PHP5の切り替えはできます。 どんなことでも結構なのでご教授願います。

    • ベストアンサー
    • PHP
  • [PHP] 任意のDNSでIPアドレスを取得

    PHPスクリプトにてホスト名からIPアドレスを取得する際は getenv()関数を用いるのが一般的だと思うのですが、 名前解決を行うDNSを指定して取得する方法はありますでしょうか。 具体的には、コマンドプロンプトのnslookup時に、 対話形式で「server DNS」で指定できる様な事を PHPのスクリプトでも実現したいです。 PEARなどのライブラリを使用する方法でもOKですが、 導入予定のサーバーが共用レンタルサーバーの為、 サーバーにソフトをインストールする等の方法は導入が難しいです。 以上、宜しくお願い致します。

    • 締切済み
    • PHP
  • php

    Windows7上で、DreamweaverCS6とXamppをインストールしています。http://www.php-labo.net/よりフリースクリプト「cart」をダウンロードしXamppフォルダ内に解凍しマニュアルに従い設定しました。Dreamweaverのサイトを設定し、Xamppフォルダ内にサーバーとしました。cartフォルダ内の index.php をDreamweaverで開き、ライブにすると「SQLSTATE[HY000][2002]php_getaddresses: getaddrinfo failed: 」と表示されます。どのようにすればこのエラーを解決できるか教えてください。

  • 1行目の#! "C:\xampp\php\php-cgi.exe"について

    XAMPP for windowsをXPで利用しています。 phpファイルの1行目に、「#! "C:\xampp\php\php-cgi.exe"」を記述しないとphpが実行されません。 1行目の「#! "C:\xampp\php\php-cgi.exe"」を記述せず、「<?php~ ?>」の記述でファイルを呼び出すと、「Server error! サーバ内部で障害が発生し、 リクエストに応えることができませんでした。 サーバが過負荷であるか、 CGI スクリプトにエラーがあります。」の表示になります。 apacheのconfに、「AddType application/x-httpd-php .php」を追記してみましたが、結果は同じでした。 「C:\xampp\php」でpathを通しています。 超初級な質問かと思いますが、お助けください。

    • 締切済み
    • PHP
  • <?php phpinfo(); ?>と<? phpinfo(); ?>の違い。

    OpenPNE のインストールで色々調べており、以下のサイトで質問させて頂いております。 Fatal error: OpenPNE設置時のエラー に関して http://oshiete1.goo.ne.jp/qa2511321.html 色々調べており、PHP に関する問題では思っていますが、正直な所、PHP を触るのが初めてですので、初心に戻って PHP から調べています。 サーバは、さくらインターネットを借りており、基本的に apache,php 等は標準で動作しています(インストール作業はしていません)。 PHP の動作確認をしようと、 <? phpinfo(); ?> と書いたテキストファイルを作成してサーバにアップロードしました。 ファイル名は、test.php としました。 アップロード後、サーバにアクセス(test.php)すると白紙(真っ白)な状態です。ソースを確認すると<? phpinfo(); ?>が表示されます。ファイルは詠み込まれていると判断しました。 少し調べ所、 <? phpinfo(); ?>を<?php phpinfo(); ?>としたらどうでしょうかと言うアドバイスが有り、<?php phpinfo(); ?>と修正し、サーバにアップロードしら所、phpinfo のページを見ることが出来ました。 そこで質問なんですが<?php phpinfo(); ?>と<? phpinfo(); ?>は何が違うのでしょうか、サーバ側の設定でしょうか。 また、この違いが、OpenPNE のエラーと関係があるのでしゅか? アドバイスを頂ければ幸いです。

    • ベストアンサー
    • PHP

専門家に質問してみよう