xampp php コマンドライン入力

このQ&Aのポイント
  • xamppでのphpコマンドライン入力の不具合について
  • php5.5では正常に動作するが、xamppのphp5.4では不具合が発生する
  • Windows7でxampp portableを使用している
回答を見る
  • ベストアンサー

xampp php コマンドライン入力

標準入力を受け付けるプログラムの動作がおかしいのですが、原因を教えてください。 単体でインストールしたphp5.5では正常に動作します。 windows7 xampp_portableのphp5.4 c:\xampp\php 実行結果 a Input->:Print->a c:\php 実行結果 Input->:a Print->a ソース <?php $str; print "Input->:"; $str = trim(fgets(STDIN)); print "Print->$str\n"; ?> 以上、どなたかお願いいたします。 phpの勉強を始めたばかりなので、初歩的な質問に なっているかもしれません。

  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
noname#244856
noname#244856
回答No.1

php.iniのoutput_buffering設定に影響されているようですね。「バッファリング」といって、echoした後もすぐには出力せずに、ある程度溜めておいてまとめて表示させる手法です。実際にApacheを利用してWebサイトを公開する場合にはバッファリングを使用したほうが好都合なことが多いのですが、コマンドラインの場合には完全に要らない子ですね。局所的に無効にしたい場合は <?php while (ob_get_level()) ob_end_clean(); print "Input->:"; $str = trim(fgets(STDIN)); print "Print->$str\n"; こんな感じでどうでしょうか。なお、終了タグ「?>」は書かなくてもいいには過ぎず、書かない方がいいと推奨されています。マニュアルにそう書かれています。

tama_sampo
質問者

お礼

ありがとうございました。この問題が解決できず2日ほどかかりつけでした。 教えていただいたプログラムで実行ができました。 Apatcheを利用するまではバッファリングを無効にしておくため php.iniの output_handler = mb_output_handler と output_buffering = 4096 をコメントアウトしました。(他に影響がないといいのですが・・・不安) また、終了タグについてもご指摘ありがとうございました。 感謝いたします。

関連するQ&A

  • PHP whileの意味を知りたい

    お世話になります。 $input=trim(fgets(STDIN)); while($input){ $array[]=$input; $input=trim(fgets(STDIN)); } 上記の意味を教えてください。 while (条件式) 実行する処理; 例 $num = 0; while (num < 2){ print "num=".$num; } 今まではこういった式を学んでいました。 while($input)の$inputという条件式?? $input=trim(fgets(STDIN));の意味も飲み込めないです。 解説を宜しくお願いします。

    • ベストアンサー
    • PHP
  • phpのプログラムについて

    <?php $n = trim(fgets(STDIN)) * 60; $m = trim(fgets(STDIN)); for ($i = 1; $i <= $m; $i ++) { $n -= trim(fgets(STDIN)); $o = $n >= 0 ? $i : $o; } echo $n >= 0 ? 'OK' : $o; ?> というコードの $o = $n >= 0 ? $i : $o; の部分の意味がわかりません。 ?の意味と:の意味教えて下さい。

  • コマンドラインからPHPを実行するには。(Windows)

    PHPスクリプトをコマンドライン上で実行しようと思い、 >php bookread.php と入力したところ、 >'cdc:\' は、内部コマンドまたは外部コマンド、 >操作可能なプログラムまたはバッチ ファイルとして認識されていません。 と表示されてしまいます。 おそらく環境変数の問題か、もしくは実行しようとしたディレクトリがいけないのかと思いますが、どうしたらよいのかわかりません。 Windowsで、OSはwinXP、また、phpはxamppで取得しました。 実行しようとしたファイルbookread.phpは c:\xampp\htdocs\_test というフォルダの中にあります。 どのディレクトリに移ってから行えばよいのか、もしくは環境変数にどう書き加えればよいのか、教えてください。 私が実行を試したディレクトリは、 c:\xampp\htdocs\_test> と c:\> です。 (ブラウザ上で他のPHPスクリプトを実行することは可能です。)

    • 締切済み
    • PHP
  • xamppでPHPを実行

    PHP初心者です。 Xampp(バージョンは1.6.8)をインストールして、 PHPファイルを実行しようとすると、 「Fatal error: Undefined class name 'loggermanager'」 というエラーが出てしまいます。 libフォルダに「LoggerManager.php」は入っているのですが… 実行しようとしているファイルは C:\xampp\htdocs\ディレクトリ1\ディレクトリ2\ディレクトリ3\ディレクトリ4\ディレクトリ5 の配下にあり、「LoggerManager.php」は C:\xampp\htdocs\test\support_tool_pon\lib\log4php の配下にあります。 原因に心当たりがある方、教えてください。

    • ベストアンサー
    • PHP
  • [PHP][XAMPP]でUnixコマンドを使う方

    windows10が入っているPCにxamppをインストールして使っています。 エディタはVSCodeを使って学習しています。 ここでループや条件分岐等の基礎文法や、ceil,mt_rand, sprintf, sort, などのビルドイン関数の学習をしていました。問題なく動作します。 が、途中で学習項目が以下のようなUnixコマンドを使ってファイルに文字を書き込んだり、ディレクトリ操作、Unixタイムスタンプや日時を扱う関数の項目にはいりました。 fopen(),fwrite(),fclose(),fread(),file_get_contents(),file(),opendir(), readdir() 当然、今までのようにエディタでは動作しません。 xamppの「Shell」を開いてみると「Xampp for Windows」が開きます。 ここでも'ls'はじめ上記のようなコマンドは動いてくれません。 Unixコマンドを使う方法を調べているとubuntsというLinuxディストリビューションをインストールしました。とりあえずこれを使えばUnixコマンドは使えるようです。実際は少し前に入れていたものなのですが、 このubuntsのコマンドラインに pwd と打つと xx-00@DESKTOP-XXX:^$ pwd /home/xx-00 このように表示されます。 現在 C://:xampp/htcdocs/ 内に学習用フォルダを作成してxamppを使いphpを学習しています。 たとえば c:> xampp/htcdocs/php/study フォルダとします。 ubuntsのルートディレクトリ /home/xx-00 をxamppと同じ c:> xampp/htcdocs/php/study に変更してやると統合? 現在の環境でUnixコマンドが使えるようになりますか? もしご存じでしたら教えて下さい。 基本的に初心者で自分自身が詳しくわかっていません。 教材は添付画像のようになっています。 これと同じ環境を作りたいと考えています。 考え方が根本的に間違っているのかもしれません。その場合現在のWindows10にXamppを入れた環境でunixコマンドを利用する方法が別に何かありますか? 教材は添付画像のようになっています。 これと同じ環境を作りたいと考えています。よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHP(Windows)でコマンド実行

    Windows上のapacheとPHPで、ベーシック認証のIDとパスワードを登録する仕組みを作成しているのですが、execが思ったように動きません。 以下にその部分だけを実行できるものを書きます。 <?php $com="C:\\Program Files\\xampp\\apache\\bin\\htpasswd.exe C:\\Program Files\\xampp\\apache\\.htpasswd id pass"; //$com="\"C:\\Program Files\\xampp\\apache\\bin\\htpasswd.exe\" \"C:\\Program Files\\xampp\\apache\\.htpasswd\" id pass"; //$com="dir"; exec($com,$output); print_r($output); ?> 原因はなんとなく、プログラムとパスワードファイルのパスの中にあるスペース(Program Files)だと思い、二重引用符で囲ってみたりした(一つ目のコメントのように)のですが、結果は同じでした。 二つ目のコメントのようなdirコマンドはちゃんと動きます。 どのようにすれば、パスを指定した実行ファイルが動作するのでしょうか?

    • 締切済み
    • PHP
  • 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 xampp TOPページ

    xamppをインストールして、PHPがネットにつながらなくてもできるようになりました。 しかしこのhttp://localhost/のTOPページのフォルダ(DocumentRoot)を変えようと思い、 http.confを DocumentRoot "C:/Program Files/xampp/htdocs" ↓ DocumentRoot "C:/Documents and Settings/username/デスクトップ/php" に変更してxampp_restart.exeを実行して、確かめてみたのですが、 php/フォルダにあるPHPは動きませんでした。 まったくお手上げ状態です。 どこを変更すれば動くようになるのかわかる方教えて下さい。

    • ベストアンサー
    • PHP
  • PATHは;C:\xampp\phpでOK^^

    http://okwave.jp/qa/q8480862.html の続きですが   PATHは以下で解決しました^^・・と思いますが!?  システムプロパティ⇒詳細設定⇒環境変数⇒システム環境変数⇒Pathの最後に;C:\xampp\php  と入力した。 それで!  コマンドプロンプトを実行した結果が以下です。  c:\>php -v PHP 5.4.19 (cli) (built: Aug 21 2013 01:12:03) Copyright (c) 1997-2013 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies c:\>cd C:\xampp\htdocs\study.localhost C:\xampp\htdocs\study.localhost>php stringcast.php 100 ・ソnum is 100 C:\xampp\htdocs\study.localhost> 以上、OKでしょうか!?  宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • XAMPP1.7.1上でPHPを実行するとソースが表示されます。

    いつも、お世話になっております。 小生、只今WindowsXPSP3上でXAMPP1.7.1を使い、PHPプログラミングを勉強しているPHP初心者です。 今回質問させて頂きたいのは、 HTMLで作成したページから、PHPで作成したページに遷移する際、 PHPで作成したページに、PHPのソースが表示されてしまいます。 詳しくご説明させて頂きますと、以下の様になります。 1・HTMLで入力フォーム、表示ボタンを作成。 2・入力フォームにデータを入力、表示ボタンを押下。 3・PHPで作成したページに遷移、本来HTMLで入力されたデータが表示されるはずなのに、PHPソースが表示される。 以上です。 以下にHTMLソース、PHPソースを提示させて頂きます。 -----HTML----- <html> <head> <title>ビールの値段</title> </head> <body> <form action="source.php" method="post"> お名前 : <input type="text" name="YourName"><br> ビールの値段: <input type="text" name="PriceOfBeer"><br> 本数: <input type="text" name="AmountOfBeer"><br> <input type="submit" value="計算"> </form> </bodyまた、> </html> -----PHP----- <?php $Today = date("Y年m月d日"); ?> <html> <head> <title>ビールの値段計算結果</title> </head> <body> <?php print("<h3>$Today</h3>\n"); print($_REQUEST['YourName'] . " さん<br><br>"); print("本日購入したビールの値段は"); print($_REQUEST['PriceOfBeer'] * $_REQUEST['AmountOfBeer']); print("円です。<br>\n"); ?> </body> </html> 以上です。 ちなみに他のPHP文例えば下記の様なPHP文は普通に実行されます。 -----PHP----- <?php $State = "Tokyo"; $Tokyo = "港区"; print("出身は東京の{$$State}です。"); ?> そして、各ツールのヴァージョンはXAMPP1.7.1、PHP5.2.9、Apache2.2.11.0になります。 また、XAMPP上の文字コードはUTF-8に設定してあり、PHPのソースはUTF-8にエンコード指定し保存して実行しています。 以上、ご確認の程、先輩方ご教授宜しくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう