私はphpが初めてで、コマンドラインからphpを実行したかったです。 WAMPをインストールし、「システム変数」をphpフォルダー(C:\wamp\bin\php\php5.4.3
)に設定しました。
Run
-> CMD
->に移動してphp -a
と入力してEnterキーを押すと、interactive mode enabled
と表示されます。しかし、echo 'Hi';
と書いても何も表示されません。
php -a
と入力してEnterキーを押しても、「php>」のようなものは表示されません。
PHP CLIと呼ばれる(コマンドラインインターフェイス用の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.z
をWAMPServer内にインストールしたPHPのバージョンの有効なフォルダー名に変更します
これを既にPATHにあるフォルダーの1つに保存して、どこからでも実行できるようにします。
コマンドウィンドウから、ソースフォルダーにcdして> phppathを実行します。
次に実行する
php your_script.php
夢のように機能するはずです。
必要に応じてPHP Composerおよび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.1.9
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
数年前にこの問題に出くわしたときのことを思い出します。readlineがサポートされていないPHPインタラクティブモードを使用するために、ウィンドウにreadlineがないため、インタラクティブシェルがないためです。
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
バッチファイルを使用してみてください
php -S localhost:8000
.bat
拡張子、server.bat
として保存しますserver.bat
で準備ができているhttp://localhost:8000
ファイルをクリックしますエラーが発生した場合、phpは内部コマンドまたは外部コマンドを認識しません。環境変数に移動し、php.exeのパスを編集します"C:\wamp\bin\php\php5.4.3"
あなたが記述している問題は、あなたのバージョンのPHPがreadline PHPモジュールを失い、インタラクティブなシェルが動作しないように聞こえるかもしれません。これは this PHP bug submissionに基づいています。
実行してみてください
php -m
そして、出力に「readline」が表示されるかどうかを確認します。
配布からreadlineを省略したのには、十分な理由があるかもしれません。 PHPは通常、Webサーバーによって実行されます。そのため、ほとんどのユースケースでは実際には必要ありません。以下を使用して、コマンドプロンプトからファイル内のPHPコードを実行できると確信しています。
php file.php
phpsh プロジェクトもあり、PHP用の(より良い)対話型シェルを提供します。ただし、一部の人々はWindowsでそれを実行するのに問題があります(私はこれを自分で試しませんでした)。
Edit: こちらのドキュメント によると、readline
はWindowsではサポートされていません:
注:この拡張機能は、Windowsプラットフォームでは使用できません。
したがって、それが正しい場合、オプションは次のとおりです。
簡単なコードスニペットを実行する場合は、-rオプションを使用できます。
php -r "echo 'hi';"
-rは、スクリプトタグ<?..?>
を使用せずにコードを実行できます
Php.exeを使用してphpページを実行し、phpコードでphpファイルを作成し、cmdで"[PATH to php.ext]\php.exe [path_to_file]\file.php"
と記述します。
更新済みいくつかの調査の後、最善の解決策はその情報を使用することでした 別のstackoverflowスレッド スクリー出力から。したがって、php -a
の代わりにcall "php.exe" -f NAMED_SCRIPT.php
を使用する必要があります
OLDReadlineはWindowsでは使用できないため、PHPで記述された既存のPHPシェルは機能しません。ただし、-a対話モードを使用する回避策があります。
ここに2つの問題を抱えています。 EOFのようなコード/ファイルの最後を示すためにCTRL Zコマンドを実行するまで結果を見ることができません。実行すると、ほとんどの場合、結果は印刷された結果となり、ウィンドウが高速で閉じられます。とにかく、-aインタラクティブモードではなく、cmdに戻ります。
このコンテンツを.batファイルに保存し、PHP PATHをWindows変数に定義するか、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ではなくSIGSTEP(次のステップ)を取得し(通常、CTRL + C)、次の命令を読み取ります。これは.bat自体の再帰呼び出しです。常にPHP -aモードになっているため、終了コマンドはありません。 Ctrlキーを押しながらCキーを押すか、マウスでexitクロスを押す必要があります。 (Alt + f4なし)
「Bat to Exe」コンバーターを使用して簡単に使用することもできます。
次の解決策は、特に湿地環境向けです:
これは少しの間私をfoxし、他のすべての提案を試みました、$ PATHなどは手がかりを探してWindowsレジストリを検索しました:
GUI(wampmanager)はバージョン7が選択されていることを示し、ブラウザのページでphpinfo()を実行するとバージョン7.x.xが表示されますが、コマンドプロンプトでphp -vは5.x.xを報告します
Wampmanagerの頭を右クリックしてアイコン->ツール->使用されていないバージョンを削除し、古いバージョンを削除すると、サービスが再起動され、コマンドプロンプトが7.x.xを返します。
このソリューションは、PHPバージョンを切り替える場合に古いバージョンを使用しないことを意味しますが、CLIで使用するバージョンを指定するように見える設定ファイルがC:\ wamp64\wampmanager.confにあります(パラメーターはphpCliVersionと呼ばれます) 。私はそれを変更し、サーバーを再起動しました...私はそれを解決したと思いましたが、おそらく私は少しイライラしていなかったので、そこにいくつかのマイレージがあるかもしれないと感じています。
誰かを助けることを願っています
古いphpバージョンが必要ない場合は、次の手順を実行してください。
これはうまくいく
これは、PHPが入力したすべてを評価する「インタラクティブモード」にいるためです。最終結果を表示するには、「ctrl + z」を押してEnterキーを押します。評価された結果が表示されます:)
追伸管理者としてcmdを実行してください!