Используется только для того, чтобы поместить каталог wamp php в переменные окружения моей системы, как было сказано здесь: командная строка локально с использованием wamp .Более или менее это очень простая правка переменной среды с добавлением PHP-пути к серверам WAMP, например ;C:\wamp\bin\php\php5.6.40
. Сейчас я изучаю более новые версии, которые WAMP рекомендует не делать (как показано здесь: Как запустить PHP из командной строки Windows в WAMPServer ).
В этом ответе показана умная программа командной строки / .cmd
с именем phppath.cmd
, предназначенная для пользователей Linux.
Не отредактировано, это выглядит так:
@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=
Звучит великолепно, но у меня с этим небольшой успех.Как это работает, я помещаю файл phppath.cmd
в мой каталог Windows, и он запускается автоматически при запуске Windows.
Возможно, преобразования linux-windows меня немного смутили, но вот мой отредактированный вывод для Windows10 WAMP64 (текущий в моей папке C:\Windows
)
@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 * Serch path by default
REM * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
REM * EDIT THE NEXT 3 Parameters to fit your installed WAMPServer
REM * for example I installed WAMPServer on the D: drive you may
REM * have used C:
REM * - baseWamp : is the drive and folder where you installed WAMPServer
REM * - defaultPHPver : is the version of PHP that will be pathed
REM * if no Parameter is put on the bat file
REM * - composerInstalled : Where I insatlled composerInstalled
REM * - phpFolder : The folder structure that contains the Multiple
REM * possible version of PHP I have installed
REM **********************************************************************
set baseWamp=C:\wamp64
set defaultPHPver=7.1.26
set composerInstalled=C:\Users\User\AppData\Roaming\Composer
set phpFolder=C:\wamp64\bin\php
if %1.==. (
set phpver=C:\wamp64\bin\php\php%defaultPHPver%
) else (
set phpver=C:\wamp64\bin\php\php
)
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=C:\wamp64\bin\php\php%phpver%
set PHP_PEAR_INSTALL_DIR=C:\wamp64\bin\php\php%phpver%\pear
set PHP_PEAR_DOC_DIR=C:\wamp64\bin\php\php%phpver%\docs
set PHP_PEAR_BIN_DIR=C:\wamp64\bin\php\php%phpver%
set PHP_PEAR_DATA_DIR=C:\wamp64\bin\php\php%phpver%\data
set PHP_PEAR_PHP_BIN=C:\wamp64\bin\php\php%phpver%\php.exe
set PHP_PEAR_TEST_DIR=C:\wamp64\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 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=C:\Users\User\AppData\Roaming\Composer
set COMPOSER_CACHE_DIR=C:\Users\User\AppData\Roaming\Composer
PATH=%PATH%;C:\Users\User\AppData\Roaming\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=
Вот здесь и возникает моя путаница.
Используя командную строку phppath
в командной строке, я получаю следующееoutput
PHP 7.1.26 (cli) (built: Jan 9 2019 21:51:32) ( ZTS MSVC14 (Visual C++ 2015) x64 )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
---------------------------------------------------------------
PEAR DOES NOT EXIST IN THIS VERSION OF php
---------------------------------------------------------------
COMPOSER INCLUDED IN THIS CONFIG
---------------------------------------------------------------
---------------------------------------------------------------
Кроме того, я не могу изменить версию PHP с помощью командной строки phppath.
Версии в моей установке WAMP64 состоят из 5.6.40
- 7.0.33
- 7.1.26
- 7.2.14
- 7.3.1
То, что я пытаюсь сделать (и хотя phppath.cmd
достигнет этого), как видно из этого потока, изменить версии CLI php с помощью простой команды.
phppath 5.6.40
phppath 7.0.33
и т. Д.
но эти команды неэффективны, они обрабатываются правильно, всегда помещайте командную строкузаявляет PHP 7.1.26 (cli)
независимо от того, указан ли он.
Не испортил ли я свои пути или что-то в этом роде, когда попытался преобразовать вышеуказанный скрипт из linux в Windows 10?Я попытался убедиться, что все пути были правильными.
edit: Использование W10 x64 версии WAMP 3.1.7.Читайте, были проблемы с использованием Powershell, или, скорее, phppath.cmd
не был разработан для powershell, поэтому я использую программу Cmder
для функций командной строки.
edit 2: Выяснилось, что php 7.1.26 действительно былв моих переменных окружения .. Я смотрел только на переменные USER env.Каким-то образом он попал в переменные SYSTEM env (не совсем уверен, как).Удалил ту запись, которая могла вызывать конфликты.Перейдем к еще одному тестированию ..
Теперь просто установите phppath.cmd
для правильной работы.
edit3: Последнее редактирование на данный момент .. Я постараюсь поэкспериментировать с этим позже, если кто-нибудьесть понимание, пожалуйста, предоставьте!Так как я заявил, что каталог wamp php находится в системных переменных среды, после удаления этой записи сообщение об ошибке [ERROR C:/wamp64 or PHP in path.
] в WAMP исчезло.
Что касается переключения / изменения между версиями CLI PHP -на данный момент, решение для лейкопластыря, но работоспособное ... если я просто поменяю файл phppath.cmd
в моей папке C:\Windows
с set defaultPHPver=7.1.26
на другую версию, например set defaultPHPver=7.0.33
или set defaultPHPver=5.6.40
-- это работает, чтобы изменить версию CLI PHP с помощью phppath в командной строке (ПОСЛЕ перезапуска).
Как это работает ...
(вручную установить defaultpath в файле cmd...) ... Откройте CLI-подобный тип cmder в ..
phppath
(здесь у меня в phppath.cmd есть версия по умолчанию 7.0.x)
PHP 7.0.33 (cli) (built: Dec 5 2018 21:22:29) ( ZTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
---------------------------------------------------------------
PEAR DOES NOT EXIST IN THIS VERSION OF php
---------------------------------------------------------------
COMPOSER INCLUDED IN THIS CONFIG
---------------------------------------------------------------
---------------------------------------------------------------
Затем я могу продолжать использовать функции CLI по умолчанию php
.
php -f version.php
Текущая версия PHP 7.0.33
Примечание: если я не инициирую с помощью команды phppath
, сначала я получаю типичное сообщение об ошибке - 'php' is not recognized as an internal or external command,
operable program or batch file.
, поэтому введите phppath
iдля работы команд php
.
Так что сейчас это здорово и работоспособно.Мне просто нужно вручную отредактировать phppath.cmd
до версии по умолчанию, которой я хочу, и перезагрузить компьютер.
Единственная проблема заключается в том, что, согласно инструкциям, phppath.cmd
должен иметь возможность изменять версию CLI PHP на лету, используя команды, которые я пытался описать выше.Это, конечно, лучше, чем необходимость вручную редактировать файл .cmd и перезапускать каждый раз, когда я хочу изменить версию.
У любого есть понимание того, почему мой Windows 10, модифицированный phppath.cmd
, не будет изменять версии с помощьюкомандной строки, только путем изменения файла и перезагрузки компьютера?Буду очень признателен ... последний шаг, чтобы спуститься:)
edit: комментарии стали довольно длинными, чтобы подвести итог определения %PATH%
, поскольку pathBak
действительно был ответом, как показано в @michael_heath Использованиеприведенный ниже скрипт работает точно так же, как и на моем компьютере с Windows 10, смена версии и все.