web-dev-qa-db-ja.com

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

私は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>」のようなものは表示されません。

79
Daman

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
70
RiggsFolly

数年前にこの問題に出くわしたときのことを思い出します。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

36
Hendra Uzia

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

  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"

12

あなたが記述している問題は、あなたのバージョンのPHPがreadline PHPモジュールを失い、インタラクティブなシェルが動作しないように聞こえるかもしれません。これは this PHP bug submissionに基づいています。

実行してみてください

php -m

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

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

php file.php

phpsh プロジェクトもあり、PHP用の(より良い)対話型シェルを提供します。ただし、一部の人々はWindowsでそれを実行するのに問題があります(私はこれを自分で試しませんでした)。

Editこちらのドキュメント によると、readlineはWindowsではサポートされていません:

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

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

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

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

php -r "echo 'hi';"

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

10
James Lock

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

4
Adidi

更新済みいくつかの調査の後、最善の解決策はその情報を使用することでした 別の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」コンバーターを使用して簡単に使用することもできます。

2
erm3nda

次の解決策は、特に湿地環境向けです:

これは少しの間私を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と呼ばれます) 。私はそれを変更し、サーバーを再起動しました...私はそれを解決したと思いましたが、おそらく私は少しイライラしていなかったので、そこにいくつかのマイレージがあるかもしれないと感じています。

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

1
BuddhaLincoln

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

  • wampを開き、wamp managerを右クリックします:tools/Change PHP CLI Version than change php version to latest
  • もう一度、wamp managerを右クリックしてください:tools/Delete unuserd versions and delete the oldest version that your system that it for your pc php version:D
  • コントロールパネル/ユーザーアカウントに移動し、環境変数を変更し、PATH変数で[編集]をクリックして、wampサーバーのbinフォルダーにある最新のphpバージョンパスを追加します。
  • すべてのコマンドラインまたはIDEを閉じて再起動し、php -vを確認します

これはうまくいく

0
Mohammad Hadi

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

追伸管理者としてcmdを実行してください!

0
saan