今日需要做一个在cmd命令窗口下使用php.exe执行的php小程序,用于循环获取某API提供的json数据并进行分析后实时发送短信提醒。
用惯了linux下的直接命令窗口输入curl、php等命令而不需要附带路径,cmd一打开就习惯性的输入curl __APIUrl__获取json数据格式,结果cmd直接提示:“‘curl’不是内部或外部命令,也不是可运行的程序或批处理文件”。大致问题可以归纳为如下:
/****cmd下执行curl.exe文件时有如下书写方式****/
//方式一
curl http://www.xxx.com/JsonApi
//方式二
D:\tools\curl.exe http://www.xxx.com/JsonApi
/***
//当执行方式一时因为没有将路径D:\tools\添加到系统环境变量(或用户环境变量)中,会提示找不到curl.exe
//这个时候要执行curl.exe就只能使用方式二了
//那么我非要使用方式一呢?
//这个时候就要将D:\tools\路径添加进去,然后就可以使用方式一了
***/
这种问题是一个很常见的问题了,在linux下可以很容易的添加一个系统环境变量,代码如下:
vi /etc/profile
//在该文件最后添加相应可执行命令的路径即可,比如php命令放在/usr/local/php5/bin/下,则添加:
export PATH=$PATH:/usr/local/php5/bin
//然后保存退出 即可使用php命令时不再附带前面的路径
但目前咱们遇到的问题不是在win平台下嘛~其实原理差不多,以为win系统添加curl命令为例。
我因为要在cmd中运行curl命令,下载了curl(带ssl、ssh2的),下载地址:
https://www.paehl.com/open_source/?download=curl_733_0_ssh2_ssl_sspi.zip 【curl主程序】
https://www.paehl.com/open_source/downloads/libssh.7z 【curl需要用到的openssl、ssh的dll库】
解压上述exe以及dll文件后,全部放在D:\tools文件夹下,打开cmd命令窗口,敲入如下命令:
D:\tools\curl.exe http://www.baidu.com
命令可以顺利执行,那么我想直接打开cmd命令窗口后输入如下命令也执行,就需要添加系统环境变量了。
curl.exe http://www.baidu.com
以本文中路径以及curl为例,概述下为curl添加系统环境变量的过程:
“我的电脑”--右键“属性”--“高级系统设置”---“环境变量”如下图所示,为系统超级管理员添加一个环境变量即可(不同的电脑有不同的系统用户,其显示是有区别的,当然也可以添加“系统变量”)。
将curl的目录添加进用户环境变量中的path即可,在已有变量后方添加如下:
;D:\tools
刚开始的时候因为我下载curl为带openssl与ssh功能的版本,而又未下载上述下载地址中的第二个dll动态链接库文件,一运行就提示错误,如下图所示:
图中错误信息已经很明确了,系统找不到libssh2.dll文件,这就牵涉到dll文件的加载位置问题了,找了下win平台关于加载dll文件的顺序,如下:
应用程序所在目录→当前目录→Windows SYSTEM目录→Windows目录→PATH环境变量指定的路径
这下好理解了,将上述下载地址第二个中下载的dll文件与curl.exe放置在同一个目录不就OK了嘛~
(文件目录情况)
(环境变量、dll配置完成后的情况)
哟嚯,本文评论功能关闭啦~