WAMPServerのWindowsコマンドラインからPHPを実行する方法


81

私はphpを初めて使用し、コマンドラインからphpを実行したいと考えていました。WAMPをインストールし、「システム変数」をphpフォルダー(C:\wamp\bin\php\php5.4.3)に設定しました。

私が行くとRun- > CMD- >タイプphp -aとヒットを入力し、それが言いますinteractive mode enabled。しかし、私が書いecho 'Hi';たとき、それは何も示していません。

php -a入力してEnterキーを押すと、「php>」のようなものも表示されません。



私が知る限り、Windowsの唯一の適切なオプションは、この他のSOの回答から推奨される優れたpsyshを使用することです:stackoverflow.com/a/33790472/327074
icc97 2017年

回答:


72

呼び出されたPHPCLI(コマンドラインインターフェイスのphp)はphp.exeと呼ばれますc:\wamp\bin\php\php5.x.y\php.exe (xとyはインストールしたphpのバージョン番号です)

コマンドラインから実行するphpスクリプトを作成したい場合は、その簡単で非常に便利です。

このようなバッチファイルを自分で作成し、それを呼び出しましょうphppath.cmd

PATH=%PATH%;c:\wamp\bin\php\phpx.y.z
php -v

x.y.zWAMPServer内にインストールしたバージョンのPHPの有効なフォルダー名に変更します

これをすでにPATH上にあるフォルダーの1つに保存して、どこからでも実行できるようにします。

コマンドウィンドウから、ソースフォルダーにcdして、> phppathを実行します。

次に実行します

php your_script.php

それは夢のように機能するはずです。

必要に応じてPHPComposerとPEARを構成し、それらが存在する例を次に示します。

@echo off

REM **************************************************************
REM * PLACE This file in a folder that is already on your PATH
REM * Or just put it in your C:\Windows folder as that is on the
REM * Search path by default
REM * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
REM * EDIT THE NEXT 3 Parameters to fit your installed WAMPServer
REM **************************************************************


set baseWamp=D:\wamp
set defaultPHPver=7.4.3
set composerInstalled=%baseWamp%\composer
set phpFolder=\bin\php\php

if %1.==. (
    set phpver=%baseWamp%%phpFolder%%defaultPHPver%
) else (
    set phpver=%baseWamp%%phpFolder%%1
)

PATH=%PATH%;%phpver%
php -v
echo ---------------------------------------------------------------


REM IF PEAR IS INSTALLED IN THIS VERSION OF PHP

IF exist %phpver%\pear (
    set PHP_PEAR_SYSCONF_DIR=D:\wamp\bin\php\php%phpver%
    set PHP_PEAR_INSTALL_DIR=D:\wamp\bin\php\php%phpver%\pear
    set PHP_PEAR_DOC_DIR=D:\wamp\bin\php\php%phpver%\docs
    set PHP_PEAR_BIN_DIR=D:\wamp\bin\php\php%phpver%
    set PHP_PEAR_DATA_DIR=D:\wamp\bin\php\php%phpver%\data
    set PHP_PEAR_PHP_BIN=D:\wamp\bin\php\php%phpver%\php.exe
    set PHP_PEAR_TEST_DIR=D:\wamp\bin\php\php%phpver%\tests

    echo PEAR INCLUDED IN THIS CONFIG
    echo ---------------------------------------------------------------
) else (
    echo PEAR DOES NOT EXIST IN THIS VERSION OF php
    echo ---------------------------------------------------------------
)

REM IF A GLOBAL COMPOSER EXISTS ADD THAT TOO
REM **************************************************************
REM * IF A GLOBAL COMPOSER EXISTS ADD THAT TOO
REM *
REM * This assumes that composer is installed in /wamp/composer
REM *
REM **************************************************************
IF EXIST %composerInstalled% (
    ECHO COMPOSER INCLUDED IN THIS CONFIG
    echo ---------------------------------------------------------------
    set COMPOSER_HOME=%baseWamp%\composer
    set COMPOSER_CACHE_DIR=%baseWamp%\composer

    PATH=%PATH%;%baseWamp%\composer

    rem echo TO UPDATE COMPOSER do > composer self-update
    echo ---------------------------------------------------------------
) else (
    echo ---------------------------------------------------------------
    echo COMPOSER IS NOT INSTALLED
    echo ---------------------------------------------------------------
)

set baseWamp=
set defaultPHPver=
set composerInstalled=
set phpFolder=

このコマンドファイルをこのように呼び出して、デフォルトバージョンのPHPを使用します

> phppath

または、このような特定のバージョンのPHPを入手するには

> phppath 5.6.30

1
それはうまくいきます、ありがとう。これがどのように機能するか説明できますか?phpフォルダーへのパスが表示されますが、コマンドライン変数 "php"とどのように関連付けられ、そのPATH =%PATH%は何をしますか?
TetraDev 2015年

PATH=%PATH%現在のパス、つまり%PATH%それに追加する新しいディレクトリを使用して、新しいPATH環境変数を作成すると言います。Windowsは、PATH内のフォルダーを検索して、現在の作業ディレクトリでは見つからない実行可能ファイル、つまり「php.exe」を見つけます。
riggsFolly 2015年

1
W10では問題なく動作します。あなたは何か間違ったことをしたに違いありません
RiggsFolly 2016年

OPは、WindowsでPHPREPLを効果的に要求していました。私はこれが質問に答えるとは思わない
icc97 2017年

1
@Cullub Power Shellでは機能しません-通常のシェルでは機能します
Johanness

36

数年前にこの問題に遭遇したときのことを覚えています。これは、Windowsにreadlineがないため、インタラクティブシェルがなく、readlineサポートなしでphpインタラクティブモードを使用するために、代わりにこれを行うことができます。

C:\>php -a 
Interactive mode enabled 

<?php 
echo "Hello, world!"; 
?> 
^Z 
Hello, world!

インタラクティブモードに入った後、開始(<?php)および終了(?>)phpタグを使用して入力し、コントロールZ(^Z、ファイルの終わりを示す)で終了します。

また、phpのサイトユーザーコメントから解決策を見つけたことを思い出します:http//www.php.net/manual/en/features.commandline.interactive.php#105729


PHP7.1はreadlineWindowsビルドで有効になっています。これを行うphp -aと、に移動し、Interactive ShellEnterキーを押すとコマンドを実行できるようになります。入力する必要はありません。<?php:などを...違いは、このコメントを参照してくださいbe2.php.net/manual/en/...
superphonic

12

バッチファイルを使用してみてください

  1. メモ帳を開く
  2. タイプ php -S localhost:8000
  3. ファイルを.bat拡張子として保存し、server.bat
  4. server.batサーバーの準備ができているファイルをクリックしますhttp://localhost:8000

依存

エラーphpが内部または外部コマンドを認識しない場合は、環境変数に移動し、php.exeへのパスを編集します "C:\wamp\bin\php\php5.4.3"


WAMPServerでは、パスに何も追加しないでください。PHPの複数のバージョンを簡単に切り替える機能が破壊されます
RiggsFolly 2015

11

あなたが説明している問題は、ご使用のバージョンのPHPにreadline PHPモジュールがないため、インタラクティブシェルが機能しない可能性があるように思われます。私はこれをこのPHPバグ提出に基づいています

実行してみてください

php -m

そして、「readline」が出力に表示されるかどうかを確認します。

ディストリビューションからreadlineを省略するのには十分な理由があるかもしれません。PHPは通常、Webサーバーによって実行されます。したがって、ほとんどのユースケースでは実際には必要ありません。次を使用して、コマンドプロンプトからファイル内のPHPコードを実行できると確信しています。

php file.php

phpshもありますPHP用の(より良い)インタラクティブシェルを提供するプロジェクトます。ただし、Windowsでの実行に問題がある人もいます(私はこれを自分で試しませんでした)。

編集:によると、ここでのドキュメントreadlineWindowsでサポートされていません。

注:この拡張機能は、Windowsプラットフォームでは使用できません。

したがって、それが正しければ、オプションは次のとおりです。

  • インタラクティブシェルを避け、コマンドラインからファイルでPHPコードを実行するだけです-これはうまくいくはずです
  • phpshをWindowsで動作させるようにしてください

いいえ、表示されませんか?どういう意味ですか?
ダマン2013年

これは、インタラクティブモードがPHPディストリビューションで機能しないことを意味します。コードを.phpファイルに入れて、コマンドラインからまたはWebサーバー経由で実行するのが最善だと思います。これでうまくいくはずです。私の回答のリンクには、PHPをソースからコンパイルreadlineし、これを機能させるために含めることができると記載されていますが、必要な経験がなく、ツールチェーン全体がインストールされていない場合は、Windowsで少し努力する必要があります。
driis 2013年

@driis Facebookからphpshを使用するためにpythonをインストールしましたが、多くの調査の結果、phpshはpython 3と互換性がないことがわかりました:(python 3でサポートされているphpshと同じものはありますか?
Daman

@ダマン、すみません、私は何も知りません。おそらくPython2をインストールしますか?また、Windowsでphpshを実行する際にも問題が発生していると思いますが、私は自分で試しませんでした。
driis 2013年

10

簡単なコードスニペットを実行したい場合は、-rオプションを使用できます。

php -r "echo 'hi';"

-rを使用すると、スクリプトタグを使用せずにコードを実行できます <?..?>


4

php.exeを使用してphpページを実行し、phpコードを使用してphpファイルを作成し、cmdで書き込みます。 "[PATH to php.ext]\php.exe [path_to_file]\file.php"


あなたのphp.exeのパスは何ですか?
アディディ2013年

C:\ wamp \ bin \ php \ php5.4.3 \ php.exe
Daman

1
したがって、作成すると、phpページ名test.phpと<?php echo( 'test');が表示されます。?>-c:/に配置し、コマンドラインを開いて「C:\ wamp \ bin \ php \ php5.4.3 \ php.exe」と入力します。「c:\ test.php」-何が表示されますか?
アディディ2013年

2

更新 いくつかの調査の後、最善の解決策は、その情報を別のスタックオーバーフロースレッドを使用して、ctrl + z入力とscree出力から回避することでした。だから、php -aあなたの代わりに使うべきですcall "php.exe" -f NAMED_SCRIPT.php

OLD ReadlineはWindowsでは使用できないため、phpで記述された既存のphpシェルはいずれも機能しません。ただし、-aインタラクティブモードを使用する回避策があります。

ここに2つの共通の問題があります。CTRL Zコマンドを実行してEOFのようなコード/ファイルの最終を示すまで、結果を確認することはできません。そうすると、ほとんどの場合、結果は印刷された結果と高速で閉じられたウィンドウになります。とにかく、インタラクティブモードではなくcmdに戻ります。

このコンテンツを.batファイルに保存し、Windows変数へのPHP PATHを定義するか、代わりにphp.exeを「exeへのフルパス」に変更します。

::
:: PHP Shell launch wrapper
::
@ECHO off
call "php.exe" -a

echo.
echo.

call "PHP Shell.bat"

これは、php.exeのモードである単純なバッチ起動です。phpを起動すると、インタラクティブに入力を待機しているため、一時停止が書き込まれなくてもスクリプトを停止します。CTRL Zを押すと、SIGSTOP(閉じる、通常はCTRL + C)ではなくSIGSTEP(次のステップ)を取得し、次の命令を読み取ります。これは、.bat自体への再帰呼び出しです。常にPHP-aモードを使用しているため、終了コマンドはありません。Ctrl + Cを使用するか、マウスで終了クロスを押す必要があります。(alt + f4なし)

「BattoExe」コンバーターを使用して簡単に使用することもできます。


1

古いphpバージョンが必要ない場合は、次の手順を実行してください。

  • wampを開き、wamp managerを右クリックして移動します:tools / PHPCLIバージョンを変更してphpバージョンを最新に変更します
  • もう一度、移動するよりもWamp Managerを右クリックします:tools /未使用のバージョンを削除し、システムがPC phpバージョンであると主張している最も古いバージョンを削除します:D
  • コントロールパネル/ユーザーアカウントに移動/環境変数を変更し、PATH変数で編集をクリックして、wampサーバーのbinフォルダーにある最新のphpバージョンパスを追加します
  • すべてのコマンドラインまたはIDEを閉じて再起動し、php-vを確認します

これはうまくいきます


0

これは、phpが入力したすべてのものを評価する「インタラクティブモード」にいるためです。最終結果を確認するには、「ctrl + z」を実行してEnterキーを押します。評価結果が表示されます:)

psは管理者としてcmdを実行します!


0

次のソリューションは、特にWamp環境向けです。

これはしばらくの間私を煽り、他のすべての提案を試し、$ PATHなどは手がかりを探してWindowsレジストリを検索しました:

GUI(wampmanager)は、バージョン7が選択されていることを示しています。ブラウザーのページでphpinfo()を実行すると、バージョン7.xxが表示されますが、コマンドプロンプトのphp-vは5.xxを報告します。

wampmanagerヘッドを右クリックしてアイコン->ツール->未使用バージョンを削除して古いバージョンを削除し、サービスを再起動すると、コマンドプロンプトは7.xxを返します。

この解決策は、phpバージョンを切り替えたい場合は古いバージョンがなくなったことを意味しますが、CLIで使用するバージョンを指定しているように見える構成ファイルがC:\ wamp64 \ wampmanager.confにあります(パラメーターはphpCliVersionと呼ばれます) 。変更してサーバーを再起動しました…解決したと思いましたが、効果がなかったので少し焦りましたので、少しマイレージがあるのではないかと思います。

それが誰かを助けることを願っています


1
あなたが呼ぶ古いバージョンは、WAMPServer自身の内部スクリプトのすべてがテストされるPHPのバージョンです。PHP5.xxを削除すると、これらのスクリプトが機能しなくなるリスクがあります。
riggsFolly 2017年

-1

Windowsでは、php.exeファイルをwindows / system32またはその他のシステム実行可能フォルダーに置き、コマンドラインに移動してphpと入力し、それに続いてEnterキーを押します。エラーが発生しない場合は、コマンドラインでPHPを使用する準備ができています。 。php.exeをデフォルトのシステムフォルダ以外の場所に設定した場合は、環境変数でそのパスを設定する必要があります。あなたは次の道でそこに着くことができます....

コントロールパネル->システム->アカウントの環境変数の編集->環境変数->パス->編集してからphp.exeの絶対パスを設定し、エラーがない場合は最初の段落と同じ手順に従います部門、それからあなたはコマンドラインからphpを使用する準備ができています!


WAMPServerを使用するときは、PHPをPATHに配置しないでください。WAMPServerには、多くのバージョンのPHPをインストールできます。1つのバージョンをPTHに入れると、バージョンを切り替えることができなくなります。
riggsFolly 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.