过去只是将wamp php目录放在我的系统环境变量中,如在这里回答:command line locally using wamp。添加或删除WAMP服务器PHP路径(例如;C:\wamp\bin\php\php5.6.40),这或多或少是一个非常简单的环境变量编辑
我现在正在学习WAMP建议不要使用的最新版本(如此处所示:How To Run PHP From Windows Command Line in 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启动时自动加载。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,我得到以下输出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
---------------------------------------------------------------
---------------------------------------------------------------
5.6.40-7.0.33-7.1.26-7.2.14-7.3.1phppath.cmd可以实现这一点),正如在该线程中看到的那样,使用一个简单的命令更改php CLI版本。phppath 5.6.40
phppath 7.0.33
etc
7.1.26 (cli)都始终显示状态。phppath.cmd并非为Powershell设计,因此我将Cmder程序用于命令行功能。phppath.cmd正常工作。ERROR C:/wamp64 or PHP in path.]就消失了。phppath.cmd文件夹中的C:\Windows文件从set defaultPHPver=7.1.26更改为另一个版本,例如set defaultPHPver=7.0.33或set defaultPHPver=5.6.40, -可以在命令行上使用phppath更改PHP CLI版本(重启后)。phppath
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
---------------------------------------------------------------
---------------------------------------------------------------
php CLI函数。php -f version.php
Current version is PHP 7.0.33
phppath命令启动,则会收到典型的错误消息'php' is not recognized as an internal or external command,
operable program or batch file.,因此必须输入phppath才能使php命令起作用。phppath.cmd编辑为想要的默认版本,然后重置计算机即可。phppath.cmd应该能够使用我上面尝试的命令即时更改PHP CLI版本。当然,这比必须手动编辑.cmd文件并在每次更改版本时都重新启动更好。phppath.cmd仅通过修改文件并重新启动计算机,为什么不通过命令行更改版本的人有任何见解?将不胜感激...下来的最后一步:)%PATH%定义为pathBak确实是答案,如@michael_heath中所示。使用以下脚本完全可以在我的Windows 10机器上正常工作,更改版本以及全部使用。
最佳答案
在未编辑的第20行中:
set phpver=%baseWamp%%phpFolder%%1
set phpver=C:\wamp64\bin\php\php
%1是包含第一个脚本参数值的变量。%1,因此它不会更改版本,@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 * 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
REM * 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 installed composerInstalled
REM * - phpFolder : The folder structure that contains the Multiple
REM * possible version of PHP I have installed
REM ***************************************************************
if not defined pathBak set "pathBak=%PATH%"
set "baseWamp=C:\wamp64"
set "defaultPHPver=7.1.26"
set "composerInstalled=%appData%\composer"
set "phpFolder=\bin\php\php"
if "%~1" == "" (
set "phpVer=%baseWamp%%phpFolder%%defaultPHPver%"
) else if "%~1" == "dir" (
for /d %%A in ("%baseWamp%%phpFolder%*") do echo %%~nxA
goto :end
) else (
set "phpVer=%baseWamp%%phpFolder%%~1"
)
set "PATH=%pathBak%;%phpVer%"
php -v
echo ---------------------------------------------------------------
REM IF PEAR IS INSTALLED IN THIS VERSION OF PHP
if exist "%phpVer%\pear" (
set "PHP_PEAR_SYSCONF_DIR=%phpVer%"
set "PHP_PEAR_INSTALL_DIR=%phpVer%\pear"
set "PHP_PEAR_DOC_DIR=%phpVer%\docs"
set "PHP_PEAR_BIN_DIR=%phpVer%"
set "PHP_PEAR_DATA_DIR=%phpVer%\data"
set "PHP_PEAR_PHP_BIN=%phpVer%\php.exe"
set "PHP_PEAR_TEST_DIR=%phpVer%\tests"
echo PEAR INCLUDED IN THIS CONFIG
echo ---------------------------------------------------------------
) else (
set "PHP_PEAR_SYSCONF_DIR="
set "PHP_PEAR_INSTALL_DIR="
set "PHP_PEAR_DOC_DIR="
set "PHP_PEAR_BIN_DIR="
set "PHP_PEAR_DATA_DIR="
set "PHP_PEAR_PHP_BIN="
set "PHP_PEAR_TEST_DIR="
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=%composerInstalled%"
set "COMPOSER_CACHE_DIR=%composerInstalled%"
set "PATH=%PATH%;%composerInstalled%"
rem echo TO UPDATE COMPOSER do > composer self-update
echo ---------------------------------------------------------------
) else (
echo ---------------------------------------------------------------
echo COMPOSER IS NOT INSTALLED
echo ---------------------------------------------------------------
)
:end
set "baseWamp="
set "defaultPHPver="
set "composerInstalled="
set "phpFolder="
%phpFolder%更改为相对路径,并附加到%baseWamp%使用情况(如未经编辑的版本)。 %appData%\composer,该路径应与您的硬编码路径匹配。 %baseWamp%\bin\php\php来修复“梨子”部分中的路径。 %pathBak%以存储原始PATH值,因此,原始PATH如果脚本在同一 session 中再次运行,则可以重用该值。 dir。将列出文件夹名称,以便您可以看到关于php - 在Windows 10上的多个PHP版本之间进行切换的同时,在WAMP(WAMP64)中实现CLI PHP的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55387799/
我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div
总的来说,我对ruby还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
我正在尝试设置一个puppet节点,但rubygems似乎不正常。如果我通过它自己的二进制文件(/usr/lib/ruby/gems/1.8/gems/facter-1.5.8/bin/facter)在cli上运行facter,它工作正常,但如果我通过由rubygems(/usr/bin/facter)安装的二进制文件,它抛出:/usr/lib/ruby/1.8/facter/uptime.rb:11:undefinedmethod`get_uptime'forFacter::Util::Uptime:Module(NoMethodError)from/usr/lib/ruby
我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0
在控制台中反复尝试之后,我想到了这种方法,可以按发生日期对类似activerecord的(Mongoid)对象进行分组。我不确定这是完成此任务的最佳方法,但它确实有效。有没有人有更好的建议,或者这是一个很好的方法?#eventsisanarrayofactiverecord-likeobjectsthatincludeatimeattributeevents.map{|event|#converteventsarrayintoanarrayofhasheswiththedayofthemonthandtheevent{:number=>event.time.day,:event=>ev
我想了解Ruby方法methods()是如何工作的。我尝试使用“ruby方法”在Google上搜索,但这不是我需要的。我也看过ruby-doc.org,但我没有找到这种方法。你能详细解释一下它是如何工作的或者给我一个链接吗?更新我用methods()方法做了实验,得到了这样的结果:'labrat'代码classFirstdeffirst_instance_mymethodenddefself.first_class_mymethodendendclassSecond使用类#returnsavailablemethodslistforclassandancestorsputsSeco
我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer
我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当